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