forked from OpenWF/SpaceNinjaServer
feat: change alliance member permissions (#1466)
Reviewed-on: OpenWF/SpaceNinjaServer#1466 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
parent
2ef59cd570
commit
f66c958a3c
38
src/controllers/api/setAllianceGuildPermissionsController.ts
Normal file
38
src/controllers/api/setAllianceGuildPermissionsController.ts
Normal file
@ -0,0 +1,38 @@
|
||||
import { AllianceMember, GuildMember } from "@/src/models/guildModel";
|
||||
import { getAccountForRequest } from "@/src/services/loginService";
|
||||
import { GuildPermission } from "@/src/types/guildTypes";
|
||||
import { RequestHandler } from "express";
|
||||
|
||||
export const setAllianceGuildPermissionsController: RequestHandler = async (req, res) => {
|
||||
// Check requester is a warlord in their guild
|
||||
const account = await getAccountForRequest(req);
|
||||
const guildMember = (await GuildMember.findOne({ accountId: account._id, status: 0 }))!;
|
||||
if (guildMember.rank > 1) {
|
||||
res.status(400).end();
|
||||
return;
|
||||
}
|
||||
|
||||
// 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.)
|
||||
const allianceMember = (await AllianceMember.findOne({
|
||||
guildId: guildMember.guildId,
|
||||
Pending: false
|
||||
}))!;
|
||||
if (
|
||||
!(allianceMember.Permissions & GuildPermission.Ruler) ||
|
||||
allianceMember.guildId.equals(req.query.guildId as string)
|
||||
) {
|
||||
res.status(400).end();
|
||||
return;
|
||||
}
|
||||
|
||||
const targetAllianceMember = (await AllianceMember.findOne({
|
||||
allianceId: allianceMember.allianceId,
|
||||
guildId: req.query.guildId
|
||||
}))!;
|
||||
targetAllianceMember.Permissions =
|
||||
parseInt(req.query.perms as string) &
|
||||
(GuildPermission.Recruiter | GuildPermission.Treasurer | GuildPermission.ChatModerator);
|
||||
await targetAllianceMember.save();
|
||||
|
||||
res.end();
|
||||
};
|
@ -103,6 +103,7 @@ import { saveVaultAutoContributeController } from "@/src/controllers/api/saveVau
|
||||
import { sellController } from "@/src/controllers/api/sellController";
|
||||
import { setActiveQuestController } from "@/src/controllers/api/setActiveQuestController";
|
||||
import { setActiveShipController } from "@/src/controllers/api/setActiveShipController";
|
||||
import { setAllianceGuildPermissionsController } from "@/src/controllers/api/setAllianceGuildPermissionsController";
|
||||
import { setBootLocationController } from "@/src/controllers/api/setBootLocationController";
|
||||
import { setDojoComponentMessageController } from "@/src/controllers/api/setDojoComponentMessageController";
|
||||
import { setEquippedInstrumentController } from "@/src/controllers/api/setEquippedInstrumentController";
|
||||
@ -177,6 +178,7 @@ apiRouter.get("/queueDojoComponentDestruction.php", queueDojoComponentDestructio
|
||||
apiRouter.get("/removeFromAlliance.php", removeFromAllianceController);
|
||||
apiRouter.get("/setActiveQuest.php", setActiveQuestController);
|
||||
apiRouter.get("/setActiveShip.php", setActiveShipController);
|
||||
apiRouter.get("/setAllianceGuildPermissions.php", setAllianceGuildPermissionsController);
|
||||
apiRouter.get("/setBootLocation.php", setBootLocationController);
|
||||
apiRouter.get("/setGuildMotd.php", setGuildMotdController);
|
||||
apiRouter.get("/setSupportedSyndicate.php", setSupportedSyndicateController);
|
||||
|
@ -317,5 +317,3 @@ export interface IAllianceMemberDatabase {
|
||||
Pending: boolean;
|
||||
Permissions: number;
|
||||
}
|
||||
|
||||
// TODO: GET /api/setAllianceGuildPermissions.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=000000000000000000000042&perms=2
|
||||
|
Loading…
x
Reference in New Issue
Block a user