返回提交历史
Modified
src/controllers/api/abortDojoComponentController.ts
+26
-18
Modified
src/routes/api.ts
+3
-2
XFEstudio/XFESpaceNinjaServer
feat: handle abortDojoComponent request from U10 (#3428)
Closes #3423 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3428 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
0dc2b7de
代码差异
2 个文件
+29
-20
@@ -7,36 +7,44 @@ import {
7
7
removeDojoRoom
8
8
} from "../../services/guildService.ts";
9
9
import { getInventory } from "../../services/inventoryService.ts";
10
import { getAccountIdForRequest } from "../../services/loginService.ts";
11
import { GuildPermission } from "../../types/guildTypes.ts";
12
import type { RequestHandler } from "express";
10
import { getAccountForRequest } from "../../services/loginService.ts";
11
import { GuildPermission, type IDojoClient } from "../../types/guildTypes.ts";
12
import type { Request, RequestHandler } from "express";
13
13
14
export const abortDojoComponentController: RequestHandler = async (req, res) => {
15
const accountId = await getAccountIdForRequest(req);
14
export const abortDojoComponentGetController: RequestHandler = async (req, res) => {
15
res.json(await abortDojoComponent(req, req.query.componentId as string, req.query.decoId as string | undefined));
16
};
17
18
export const abortDojoComponentPostController: RequestHandler = async (req, res) => {
19
const request = JSON.parse(String(req.body)) as IAbortDojoComponentRequest;
20
res.json(await abortDojoComponent(req, request.ComponentId, request.DecoId));
21
};
22
23
const abortDojoComponent = async (
24
req: Request,
25
componentId: string,
26
decoId?: string
27
): Promise<{ DojoRequestStatus: number } | IDojoClient> => {
28
const account = await getAccountForRequest(req);
29
const accountId = account._id.toString();
16
30
const inventory = await getInventory(accountId, "GuildId LevelKeys");
17
31
const guild = await getGuildForRequestEx(req, inventory);
18
const request = JSON.parse(String(req.body)) as IAbortDojoComponentRequest;
19
32
20
33
if (
21
34
!hasAccessToDojo(inventory) ||
22
!(await hasGuildPermission(
23
guild,
24
accountId,
25
request.DecoId ? GuildPermission.Decorator : GuildPermission.Architect
26
))
35
!(await hasGuildPermission(guild, accountId, decoId ? GuildPermission.Decorator : GuildPermission.Architect))
27
36
) {
28
res.json({ DojoRequestStatus: -1 });
29
return;
37
return { DojoRequestStatus: -1 };
30
38
}
31
39
32
if (request.DecoId) {
33
removeDojoDeco(guild, request.ComponentId, request.DecoId);
40
if (decoId) {
41
removeDojoDeco(guild, componentId, decoId);
34
42
await guild.save();
35
res.json(await getDojoClient(guild, 0, request.ComponentId));
43
return await getDojoClient(guild, 0, componentId, account.BuildLabel);
36
44
} else {
37
await removeDojoRoom(guild, request.ComponentId);
45
await removeDojoRoom(guild, componentId);
38
46
await guild.save();
39
res.json(await getDojoClient(guild, 0));
47
return await getDojoClient(guild, 0, undefined, account.BuildLabel);
40
48
}
41
49
};
42
50
@@ -1,6 +1,6 @@
1
1
import express from "express";
2
2
import { abandonLibraryDailyTaskController } from "../controllers/api/abandonLibraryDailyTaskController.ts";
3
import { abortDojoComponentController } from "../controllers/api/abortDojoComponentController.ts";
3
import { abortDojoComponentGetController, abortDojoComponentPostController } from "../controllers/api/abortDojoComponentController.ts";
4
4
import { abortDojoComponentDestructionController } from "../controllers/api/abortDojoComponentDestructionController.ts";
5
5
import { activateRandomModController } from "../controllers/api/activateRandomModController.ts";
6
6
import { addFriendGetController, addFriendPostController } from "../controllers/api/addFriendController.ts";
@@ -181,6 +181,7 @@ const apiRouter = express.Router();
181
181
182
182
// get
183
183
apiRouter.get("/abandonLibraryDailyTask.php", abandonLibraryDailyTaskController);
184
apiRouter.get("/abortDojoComponent.php", abortDojoComponentGetController);
184
185
apiRouter.get("/abortDojoComponentDestruction.php", abortDojoComponentDestructionController);
185
186
apiRouter.get("/addFriend.php", addFriendGetController); // ~U16 and below
186
187
apiRouter.get("/addFriendImage.php", addFriendImageGetController) // U17 and below
@@ -253,7 +254,7 @@ apiRouter.get("/version.php", versionController);
253
254
apiRouter.get("/worldState.php", worldStateController); // U8
254
255
255
256
// post
256
apiRouter.post("/abortDojoComponent.php", abortDojoComponentController);
257
apiRouter.post("/abortDojoComponent.php", abortDojoComponentPostController);
257
258
apiRouter.post("/activateRandomMod.php", activateRandomModController);
258
259
apiRouter.post("/addFriend.php", addFriendPostController);
259
260
apiRouter.post("/addFriendImage.php", addFriendImagePostController);