forked from OpenWF/SpaceNinjaServer
feat: edit clan hierarchy (#1164)
Re #1144 Reviewed-on: OpenWF/SpaceNinjaServer#1164
This commit is contained in:
parent
516df61633
commit
b7800b6d20
16
src/controllers/api/customizeGuildRanksController.ts
Normal file
16
src/controllers/api/customizeGuildRanksController.ts
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import { getGuildForRequest } from "@/src/services/guildService";
|
||||||
|
import { IGuildRank } from "@/src/types/guildTypes";
|
||||||
|
import { RequestHandler } from "express";
|
||||||
|
|
||||||
|
export const customizeGuildRanksController: RequestHandler = async (req, res) => {
|
||||||
|
const guild = await getGuildForRequest(req);
|
||||||
|
const payload = JSON.parse(String(req.body)) as ICustomizeGuildRanksRequest;
|
||||||
|
// TODO: Verify permissions
|
||||||
|
guild.Ranks = payload.GuildRanks;
|
||||||
|
await guild.save();
|
||||||
|
res.end();
|
||||||
|
};
|
||||||
|
|
||||||
|
interface ICustomizeGuildRanksRequest {
|
||||||
|
GuildRanks: IGuildRank[];
|
||||||
|
}
|
@ -6,7 +6,8 @@ import {
|
|||||||
ILongMOTD,
|
ILongMOTD,
|
||||||
IGuildMemberDatabase,
|
IGuildMemberDatabase,
|
||||||
IGuildLogClassChange,
|
IGuildLogClassChange,
|
||||||
IGuildLogTechChange
|
IGuildLogTechChange,
|
||||||
|
IGuildRank
|
||||||
} from "@/src/types/guildTypes";
|
} from "@/src/types/guildTypes";
|
||||||
import { Document, Model, model, Schema, Types } from "mongoose";
|
import { Document, Model, model, Schema, Types } from "mongoose";
|
||||||
import { fusionTreasuresSchema, typeCountSchema } from "./inventoryModels/inventoryModel";
|
import { fusionTreasuresSchema, typeCountSchema } from "./inventoryModels/inventoryModel";
|
||||||
@ -58,6 +59,53 @@ const longMOTDSchema = new Schema<ILongMOTD>(
|
|||||||
{ _id: false }
|
{ _id: false }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const guildRankSchema = new Schema<IGuildRank>(
|
||||||
|
{
|
||||||
|
Name: String,
|
||||||
|
Permissions: Number
|
||||||
|
},
|
||||||
|
{ _id: false }
|
||||||
|
);
|
||||||
|
|
||||||
|
const defaultRanks: IGuildRank[] = [
|
||||||
|
{
|
||||||
|
Name: "/Lotus/Language/Game/Rank_Creator",
|
||||||
|
Permissions: 16351
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "/Lotus/Language/Game/Rank_Warlord",
|
||||||
|
Permissions: 16351
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "/Lotus/Language/Game/Rank_General",
|
||||||
|
Permissions: 4318
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "/Lotus/Language/Game/Rank_Officer",
|
||||||
|
Permissions: 4314
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "/Lotus/Language/Game/Rank_Leader",
|
||||||
|
Permissions: 4106
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "/Lotus/Language/Game/Rank_Sage",
|
||||||
|
Permissions: 4304
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "/Lotus/Language/Game/Rank_Soldier",
|
||||||
|
Permissions: 4098
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "/Lotus/Language/Game/Rank_Initiate",
|
||||||
|
Permissions: 4096
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "/Lotus/Language/Game/Rank_Utility",
|
||||||
|
Permissions: 4096
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
const guildLogTechChangeSchema = new Schema<IGuildLogTechChange>(
|
const guildLogTechChangeSchema = new Schema<IGuildLogTechChange>(
|
||||||
{
|
{
|
||||||
dateTime: Date,
|
dateTime: Date,
|
||||||
@ -81,6 +129,7 @@ const guildSchema = new Schema<IGuildDatabase>(
|
|||||||
Name: { type: String, required: true, unique: true },
|
Name: { type: String, required: true, unique: true },
|
||||||
MOTD: { type: String, default: "" },
|
MOTD: { type: String, default: "" },
|
||||||
LongMOTD: { type: longMOTDSchema, default: undefined },
|
LongMOTD: { type: longMOTDSchema, default: undefined },
|
||||||
|
Ranks: { type: [guildRankSchema], default: defaultRanks },
|
||||||
DojoComponents: { type: [dojoComponentSchema], default: [] },
|
DojoComponents: { type: [dojoComponentSchema], default: [] },
|
||||||
DojoCapacity: { type: Number, default: 100 },
|
DojoCapacity: { type: Number, default: 100 },
|
||||||
DojoEnergy: { type: Number, default: 5 },
|
DojoEnergy: { type: Number, default: 5 },
|
||||||
|
@ -22,6 +22,7 @@ import { contributeToDojoComponentController } from "@/src/controllers/api/contr
|
|||||||
import { contributeToVaultController } from "@/src/controllers/api/contributeToVaultController";
|
import { contributeToVaultController } from "@/src/controllers/api/contributeToVaultController";
|
||||||
import { createGuildController } from "@/src/controllers/api/createGuildController";
|
import { createGuildController } from "@/src/controllers/api/createGuildController";
|
||||||
import { creditsController } from "@/src/controllers/api/creditsController";
|
import { creditsController } from "@/src/controllers/api/creditsController";
|
||||||
|
import { customizeGuildRanksController } from "@/src/controllers/api/customizeGuildRanksController";
|
||||||
import { declineGuildInviteController } from "@/src/controllers/api/declineGuildInviteController";
|
import { declineGuildInviteController } from "@/src/controllers/api/declineGuildInviteController";
|
||||||
import { deleteSessionController } from "@/src/controllers/api/deleteSessionController";
|
import { deleteSessionController } from "@/src/controllers/api/deleteSessionController";
|
||||||
import { destroyDojoDecoController } from "@/src/controllers/api/destroyDojoDecoController";
|
import { destroyDojoDecoController } from "@/src/controllers/api/destroyDojoDecoController";
|
||||||
@ -171,6 +172,7 @@ apiRouter.post("/contributeGuildClass.php", contributeGuildClassController);
|
|||||||
apiRouter.post("/contributeToDojoComponent.php", contributeToDojoComponentController);
|
apiRouter.post("/contributeToDojoComponent.php", contributeToDojoComponentController);
|
||||||
apiRouter.post("/contributeToVault.php", contributeToVaultController);
|
apiRouter.post("/contributeToVault.php", contributeToVaultController);
|
||||||
apiRouter.post("/createGuild.php", createGuildController);
|
apiRouter.post("/createGuild.php", createGuildController);
|
||||||
|
apiRouter.post("/customizeGuildRanks.php", customizeGuildRanksController);
|
||||||
apiRouter.post("/destroyDojoDeco.php", destroyDojoDecoController);
|
apiRouter.post("/destroyDojoDeco.php", destroyDojoDecoController);
|
||||||
apiRouter.post("/dojoComponentRush.php", dojoComponentRushController);
|
apiRouter.post("/dojoComponentRush.php", dojoComponentRushController);
|
||||||
apiRouter.post("/drones.php", dronesController);
|
apiRouter.post("/drones.php", dronesController);
|
||||||
|
@ -86,44 +86,7 @@ export const getGuildClient = async (guild: TGuildDatabaseDocument, accountId: s
|
|||||||
MOTD: guild.MOTD,
|
MOTD: guild.MOTD,
|
||||||
LongMOTD: guild.LongMOTD,
|
LongMOTD: guild.LongMOTD,
|
||||||
Members: members,
|
Members: members,
|
||||||
Ranks: [
|
Ranks: guild.Ranks,
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Creator",
|
|
||||||
Permissions: 16351
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Warlord",
|
|
||||||
Permissions: 14303
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_General",
|
|
||||||
Permissions: 4318
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Officer",
|
|
||||||
Permissions: 4314
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Leader",
|
|
||||||
Permissions: 4106
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Sage",
|
|
||||||
Permissions: 4304
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Soldier",
|
|
||||||
Permissions: 4098
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Initiate",
|
|
||||||
Permissions: 4096
|
|
||||||
},
|
|
||||||
{
|
|
||||||
Name: "/Lotus/Language/Game/Rank_Utility",
|
|
||||||
Permissions: 4096
|
|
||||||
}
|
|
||||||
],
|
|
||||||
Tier: 1,
|
Tier: 1,
|
||||||
Vault: getGuildVault(guild),
|
Vault: getGuildVault(guild),
|
||||||
Class: guild.Class,
|
Class: guild.Class,
|
||||||
|
@ -26,6 +26,7 @@ export interface IGuildDatabase {
|
|||||||
Name: string;
|
Name: string;
|
||||||
MOTD: string;
|
MOTD: string;
|
||||||
LongMOTD?: ILongMOTD;
|
LongMOTD?: ILongMOTD;
|
||||||
|
Ranks: IGuildRank[];
|
||||||
|
|
||||||
DojoComponents: IDojoComponentDatabase[];
|
DojoComponents: IDojoComponentDatabase[];
|
||||||
DojoCapacity: number;
|
DojoCapacity: number;
|
||||||
@ -57,6 +58,27 @@ export interface ILongMOTD {
|
|||||||
//authorGuildName: "";
|
//authorGuildName: "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 32 seems to be reserved
|
||||||
|
export enum GuildPermission {
|
||||||
|
Ruler = 1, // Change clan hierarchy
|
||||||
|
Advertiser = 8192,
|
||||||
|
Recruiter = 2, // Invite members
|
||||||
|
Regulator = 4, // Kick members
|
||||||
|
Promoter = 8, // Promote and demote members
|
||||||
|
Architect = 16, // Create and destroy rooms
|
||||||
|
Decorator = 1024, // Create and destroy decos
|
||||||
|
Treasurer = 64, // Contribute from vault and edit tax rate
|
||||||
|
Tech = 128, // Queue research
|
||||||
|
ChatModerator = 512,
|
||||||
|
Herald = 2048, // Change MOTD
|
||||||
|
Fabricator = 4096 // Replicate research
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IGuildRank {
|
||||||
|
Name: string;
|
||||||
|
Permissions: number;
|
||||||
|
}
|
||||||
|
|
||||||
export interface IGuildMemberDatabase {
|
export interface IGuildMemberDatabase {
|
||||||
accountId: Types.ObjectId;
|
accountId: Types.ObjectId;
|
||||||
guildId: Types.ObjectId;
|
guildId: Types.ObjectId;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user