[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 { emitEvent } from "../../../util/Event";
|
||||
import { check } from "../../../util/instanceOf";
|
||||
import { RoleCreateSchema } from "../../../schema/Roles";
|
||||
import { RoleCreateSchema, RoleModifySchema } from "../../../schema/Roles";
|
||||
import { getPublicUser } from "../../../util/User";
|
||||
|
||||
const router: Router = Router();
|
||||
@ -75,4 +75,32 @@ router.delete("/:role_id", async (req: Request, res: Response) => {
|
||||
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;
|
||||
|
@ -1,6 +1,6 @@
|
||||
export const RoleCreateSchema = {
|
||||
name: String,
|
||||
permissions: 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
|
||||
@ -8,8 +8,27 @@ export const RoleCreateSchema = {
|
||||
|
||||
export interface RoleCreateSchema {
|
||||
name: string,
|
||||
permissions: 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
|
||||
}
|
||||
|
||||
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