XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

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
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

2 个文件 +29 -20
Modified src/controllers/api/abortDojoComponentController.ts +26 -18
@@ -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
Modified src/routes/api.ts +3 -2
@@ -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);