[Route] PATCH /guilds/:id/roles
This commit is contained in:
parent
0f04fbb6e6
commit
4e765c424e
@ -3,7 +3,7 @@ import { RoleModel, GuildModel, getPermission, toObject, UserModel, Snowflake, M
|
|||||||
import { HTTPError } from "lambert-server";
|
import { HTTPError } from "lambert-server";
|
||||||
import { emitEvent } from "../../../util/Event";
|
import { emitEvent } from "../../../util/Event";
|
||||||
import { check } from "../../../util/instanceOf";
|
import { check } from "../../../util/instanceOf";
|
||||||
import { RoleCreateSchema } from "../../../schema/Roles";
|
import { RoleCreateSchema, RoleModifySchema } from "../../../schema/Roles";
|
||||||
import { getPublicUser } from "../../../util/User";
|
import { getPublicUser } from "../../../util/User";
|
||||||
|
|
||||||
const router: Router = Router();
|
const router: Router = Router();
|
||||||
@ -75,4 +75,32 @@ router.delete("/:role_id", async (req: Request, res: Response) => {
|
|||||||
res.send("Deleted");
|
res.send("Deleted");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
router.patch("/:role_id", check(RoleModifySchema), async (req: Request, res: Response) => {
|
||||||
|
const guild_id = req.params.guild_id;
|
||||||
|
const { role_id } = req.params;
|
||||||
|
|
||||||
|
const guild = await GuildModel.findOne({ id: guild_id }, { id: true }).exec();
|
||||||
|
if (!guild) throw new HTTPError("Guild not found", 404);
|
||||||
|
if (!role_id) throw new HTTPError("Unknown template_id", 404);
|
||||||
|
|
||||||
|
const user = await UserModel.findOne({ id: req.user_id }).exec();
|
||||||
|
if (!user) throw new HTTPError("User not found", 404);
|
||||||
|
|
||||||
|
const role = await RoleModel.findOne({ id: role_id, guild_id: guild_id }).exec();
|
||||||
|
if (!role) throw new HTTPError("role not found", 404);
|
||||||
|
|
||||||
|
const perms = await getPermission(req.user_id, guild_id);
|
||||||
|
|
||||||
|
if (!perms.has("MANAGE_ROLES"))
|
||||||
|
throw new HTTPError("You missing the MANAGE_ROLES permission", 401);
|
||||||
|
|
||||||
|
var roleObj = await RoleModel.findOneAndUpdate({
|
||||||
|
id: role_id, guild_id: guild_id
|
||||||
|
}, ...req.body).exec();
|
||||||
|
|
||||||
|
res.json(toObject(roleObj)).send();
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
export default router;
|
export default router;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
export const RoleCreateSchema = {
|
export const RoleCreateSchema = {
|
||||||
name: String,
|
name: String,
|
||||||
permissions: String,
|
permissions: BigInt,
|
||||||
color: Number,
|
color: Number,
|
||||||
hoist: Boolean, // whether the role should be displayed separately in the sidebar
|
hoist: Boolean, // whether the role should be displayed separately in the sidebar
|
||||||
mentionable: Boolean // whether the role should be mentionable
|
mentionable: Boolean // whether the role should be mentionable
|
||||||
@ -8,8 +8,27 @@ export const RoleCreateSchema = {
|
|||||||
|
|
||||||
export interface RoleCreateSchema {
|
export interface RoleCreateSchema {
|
||||||
name: string,
|
name: string,
|
||||||
permissions: string,
|
permissions: BigInt,
|
||||||
color: number,
|
color: number,
|
||||||
hoist: boolean, // whether the role should be displayed separately in the sidebar
|
hoist: boolean, // whether the role should be displayed separately in the sidebar
|
||||||
mentionable: boolean // whether the role should be mentionable
|
mentionable: boolean // whether the role should be mentionable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const RoleModifySchema = {
|
||||||
|
$name: String,
|
||||||
|
$permissions: BigInt,
|
||||||
|
$color: Number,
|
||||||
|
$hoist: Boolean, // whether the role should be displayed separately in the sidebar
|
||||||
|
$mentionable: Boolean, // whether the role should be mentionable
|
||||||
|
$position: Number,
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
export interface RoleModifySchema {
|
||||||
|
name?: string,
|
||||||
|
permissions?: BigInt,
|
||||||
|
color?: number,
|
||||||
|
hoist?: boolean, // whether the role should be displayed separately in the sidebar
|
||||||
|
mentionable?: boolean, // whether the role should be mentionable
|
||||||
|
position?: number,
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user