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: change alliance member permissions (#1466)

Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1466 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>

f66c958a
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

3 个文件 +40 -2
Added src/controllers/api/setAllianceGuildPermissionsController.ts +38 -0
@@ -0,0 +1,38 @@
1 import { AllianceMember, GuildMember } from "@/src/models/guildModel";
2 import { getAccountForRequest } from "@/src/services/loginService";
3 import { GuildPermission } from "@/src/types/guildTypes";
4 import { RequestHandler } from "express";
5
6 export const setAllianceGuildPermissionsController: RequestHandler = async (req, res) => {
7 // Check requester is a warlord in their guild
8 const account = await getAccountForRequest(req);
9 const guildMember = (await GuildMember.findOne({ accountId: account._id, status: 0 }))!;
10 if (guildMember.rank > 1) {
11 res.status(400).end();
12 return;
13 }
14
15 // Check guild is the creator of the alliance and don't allow changing of own permissions. (Technically changing permissions requires the Promoter permission, but both are exclusive to the creator guild.)
16 const allianceMember = (await AllianceMember.findOne({
17 guildId: guildMember.guildId,
18 Pending: false
19 }))!;
20 if (
21 !(allianceMember.Permissions & GuildPermission.Ruler) ||
22 allianceMember.guildId.equals(req.query.guildId as string)
23 ) {
24 res.status(400).end();
25 return;
26 }
27
28 const targetAllianceMember = (await AllianceMember.findOne({
29 allianceId: allianceMember.allianceId,
30 guildId: req.query.guildId
31 }))!;
32 targetAllianceMember.Permissions =
33 parseInt(req.query.perms as string) &
34 (GuildPermission.Recruiter | GuildPermission.Treasurer | GuildPermission.ChatModerator);
35 await targetAllianceMember.save();
36
37 res.end();
38 };
Modified src/routes/api.ts +2 -0
@@ -103,6 +103,7 @@ import { saveVaultAutoContributeController } from "@/src/controllers/api/saveVau
103 103 import { sellController } from "@/src/controllers/api/sellController";
104 104 import { setActiveQuestController } from "@/src/controllers/api/setActiveQuestController";
105 105 import { setActiveShipController } from "@/src/controllers/api/setActiveShipController";
106 import { setAllianceGuildPermissionsController } from "@/src/controllers/api/setAllianceGuildPermissionsController";
106 107 import { setBootLocationController } from "@/src/controllers/api/setBootLocationController";
107 108 import { setDojoComponentMessageController } from "@/src/controllers/api/setDojoComponentMessageController";
108 109 import { setEquippedInstrumentController } from "@/src/controllers/api/setEquippedInstrumentController";
@@ -177,6 +178,7 @@ apiRouter.get("/queueDojoComponentDestruction.php", queueDojoComponentDestructio
177 178 apiRouter.get("/removeFromAlliance.php", removeFromAllianceController);
178 179 apiRouter.get("/setActiveQuest.php", setActiveQuestController);
179 180 apiRouter.get("/setActiveShip.php", setActiveShipController);
181 apiRouter.get("/setAllianceGuildPermissions.php", setAllianceGuildPermissionsController);
180 182 apiRouter.get("/setBootLocation.php", setBootLocationController);
181 183 apiRouter.get("/setGuildMotd.php", setGuildMotdController);
182 184 apiRouter.get("/setSupportedSyndicate.php", setSupportedSyndicateController);
Modified src/types/guildTypes.ts +0 -2
@@ -317,5 +317,3 @@ export interface IAllianceMemberDatabase {
317 317 Pending: boolean;
318 318 Permissions: number;
319 319 }
320
321 // TODO: GET /api/setAllianceGuildPermissions.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=000000000000000000000042&perms=2