[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
	 Intevel ツ
						Intevel ツ