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 { sellController } from "@/src/controllers/api/sellController";
|
||||||
import { setActiveQuestController } from "@/src/controllers/api/setActiveQuestController";
|
import { setActiveQuestController } from "@/src/controllers/api/setActiveQuestController";
|
||||||
import { setActiveShipController } from "@/src/controllers/api/setActiveShipController";
|
import { setActiveShipController } from "@/src/controllers/api/setActiveShipController";
|
||||||
|
import { setAllianceGuildPermissionsController } from "@/src/controllers/api/setAllianceGuildPermissionsController";
|
||||||
import { setBootLocationController } from "@/src/controllers/api/setBootLocationController";
|
import { setBootLocationController } from "@/src/controllers/api/setBootLocationController";
|
||||||
import { setDojoComponentMessageController } from "@/src/controllers/api/setDojoComponentMessageController";
|
import { setDojoComponentMessageController } from "@/src/controllers/api/setDojoComponentMessageController";
|
||||||
import { setEquippedInstrumentController } from "@/src/controllers/api/setEquippedInstrumentController";
|
import { setEquippedInstrumentController } from "@/src/controllers/api/setEquippedInstrumentController";
|
||||||
@ -177,6 +178,7 @@ apiRouter.get("/queueDojoComponentDestruction.php", queueDojoComponentDestructio
|
|||||||
apiRouter.get("/removeFromAlliance.php", removeFromAllianceController);
|
apiRouter.get("/removeFromAlliance.php", removeFromAllianceController);
|
||||||
apiRouter.get("/setActiveQuest.php", setActiveQuestController);
|
apiRouter.get("/setActiveQuest.php", setActiveQuestController);
|
||||||
apiRouter.get("/setActiveShip.php", setActiveShipController);
|
apiRouter.get("/setActiveShip.php", setActiveShipController);
|
||||||
|
apiRouter.get("/setAllianceGuildPermissions.php", setAllianceGuildPermissionsController);
|
||||||
apiRouter.get("/setBootLocation.php", setBootLocationController);
|
apiRouter.get("/setBootLocation.php", setBootLocationController);
|
||||||
apiRouter.get("/setGuildMotd.php", setGuildMotdController);
|
apiRouter.get("/setGuildMotd.php", setGuildMotdController);
|
||||||
apiRouter.get("/setSupportedSyndicate.php", setSupportedSyndicateController);
|
apiRouter.get("/setSupportedSyndicate.php", setSupportedSyndicateController);
|
||||||
|
@ -317,5 +317,3 @@ export interface IAllianceMemberDatabase {
|
|||||||
Pending: boolean;
|
Pending: boolean;
|
||||||
Permissions: number;
|
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