返回提交历史
Added
src/controllers/api/setAllianceGuildPermissionsController.ts
+38
-0
Modified
src/routes/api.ts
+2
-0
Modified
src/types/guildTypes.ts
+0
-2
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
代码差异
3 个文件
+40
-2
@@ -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
};
@@ -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);
@@ -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