XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
返回提交历史

XFEstudio/SpaceNinjaServer

feat: alliance motd (#1438)

Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1438 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>

ed10a89c
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

4 个文件 +45 -19
Modified src/controllers/api/setGuildMotdController.ts +40 -16
@@ -1,35 +1,59 @@
1 import { Guild } from "@/src/models/guildModel";
2 import { hasGuildPermission } from "@/src/services/guildService";
1 import { Alliance, Guild, GuildMember } from "@/src/models/guildModel";
2 import { hasGuildPermissionEx } from "@/src/services/guildService";
3 3 import { getInventory } from "@/src/services/inventoryService";
4 4 import { getAccountForRequest, getSuffixedName } from "@/src/services/loginService";
5 import { GuildPermission } from "@/src/types/guildTypes";
5 import { GuildPermission, ILongMOTD } from "@/src/types/guildTypes";
6 6 import { RequestHandler } from "express";
7 7
8 8 export const setGuildMotdController: RequestHandler = async (req, res) => {
9 9 const account = await getAccountForRequest(req);
10 10 const inventory = await getInventory(account._id.toString(), "GuildId");
11 11 const guild = (await Guild.findById(inventory.GuildId!))!;
12 if (!(await hasGuildPermission(guild, account._id, GuildPermission.Herald))) {
13 res.status(400).json("Invalid permission");
14 return;
15 }
12 const member = (await GuildMember.findOne({ accountId: account._id, guildId: guild._id }))!;
16 13
17 14 const IsLongMOTD = "longMOTD" in req.query;
18 15 const MOTD = req.body ? String(req.body) : undefined;
19 16
20 if (IsLongMOTD) {
21 if (MOTD) {
22 guild.LongMOTD = {
23 message: MOTD,
24 authorName: getSuffixedName(account)
25 };
17 if ("alliance" in req.query) {
18 if (member.rank > 1) {
19 res.status(400).json("Invalid permission");
20 return;
21 }
22
23 const alliance = (await Alliance.findById(guild.AllianceId!))!;
24 const motd = MOTD
25 ? ({
26 message: MOTD,
27 authorName: getSuffixedName(account),
28 authorGuildName: guild.Name
29 } satisfies ILongMOTD)
30 : undefined;
31 if (IsLongMOTD) {
32 alliance.LongMOTD = motd;
26 33 } else {
27 guild.LongMOTD = undefined;
34 alliance.MOTD = motd;
28 35 }
36 await alliance.save();
29 37 } else {
30 guild.MOTD = MOTD ?? "";
38 if (!hasGuildPermissionEx(guild, member, GuildPermission.Herald)) {
39 res.status(400).json("Invalid permission");
40 return;
41 }
42
43 if (IsLongMOTD) {
44 if (MOTD) {
45 guild.LongMOTD = {
46 message: MOTD,
47 authorName: getSuffixedName(account)
48 };
49 } else {
50 guild.LongMOTD = undefined;
51 }
52 } else {
53 guild.MOTD = MOTD ?? "";
54 }
55 await guild.save();
31 56 }
32 await guild.save();
33 57
34 58 res.json({ IsLongMOTD, MOTD });
35 59 };
Modified src/models/guildModel.ts +2 -1
@@ -71,7 +71,8 @@ const techProjectSchema = new Schema<ITechProjectDatabase>(
71 71 const longMOTDSchema = new Schema<ILongMOTD>(
72 72 {
73 73 message: String,
74 authorName: String
74 authorName: String,
75 authorGuildName: String
75 76 },
76 77 { _id: false }
77 78 );
Modified src/services/guildService.ts +2 -0
@@ -581,6 +581,8 @@ export const getAllianceClient = async (
581 581 return {
582 582 _id: toOid(alliance._id),
583 583 Name: alliance.Name,
584 MOTD: alliance.MOTD,
585 LongMOTD: alliance.LongMOTD,
584 586 Clans: clans,
585 587 AllianceVault: {
586 588 DojoRefundRegularCredits: alliance.VaultRegularCredits
Modified src/types/guildTypes.ts +1 -2
@@ -64,7 +64,7 @@ export interface IGuildDatabase {
64 64 export interface ILongMOTD {
65 65 message: string;
66 66 authorName: string;
67 authorGuildName?: "";
67 authorGuildName?: string;
68 68 }
69 69
70 70 // 32 seems to be reserved
@@ -320,4 +320,3 @@ export interface IAllianceMemberDatabase {
320 320 // TODO: GET /api/divvyAllianceVault.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=663e9be9f741eeb5782f9df0&allianceId=000000000000000000000069&credits=0
321 321 // TODO: GET /api/removeFromAlliance.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=663e9be9f741eeb5782f9df0
322 322 // TODO: GET /api/setAllianceGuildPermissions.php?accountId=6633b81e9dba0b714f28ff02&nonce=5702391171614479&ct=MSI&guildId=000000000000000000000042&perms=2
323 // TODO: Handle alliance in setGuildMotd