From 47885ddbe152bc88284b056caed99047f454b338 Mon Sep 17 00:00:00 2001 From: Vins Date: Mon, 17 Jul 2023 15:20:01 +0200 Subject: [PATCH] Copied put roles into admin namespace --- src/app/api/admin/RolesController.ts | 44 +++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/src/app/api/admin/RolesController.ts b/src/app/api/admin/RolesController.ts index e40eb0f5..9445175b 100644 --- a/src/app/api/admin/RolesController.ts +++ b/src/app/api/admin/RolesController.ts @@ -1,11 +1,12 @@ import { Response, Request } from "express"; -import { Controller, Get } from "@ControllerPattern/index"; +import { Controller, Get, Put } from "@ControllerPattern/index"; import ApiController from "@Common/system/controller-pattern/ApiController"; import RolesService from "@Services/admin/RolesService/RolesService"; import { Service } from "typedi"; import { Role } from "le-coffre-resources/dist/Admin"; import authHandler from "@App/middlewares/AuthHandler"; import ruleHandler from "@App/middlewares/RulesHandler"; +import { validateOrReject } from "class-validator"; @Controller() @Service() @@ -74,4 +75,45 @@ export default class RolesController extends ApiController { return; } } + + /** + * @description Modify a specific role by uid + */ + @Put("/api/v1/super-admin/roles/:uid", [authHandler, ruleHandler]) + protected async put(req: Request, response: Response) { + try { + const uid = req.params["uid"]; + if (!uid) { + this.httpBadRequest(response, "No uid provided"); + return; + } + + const roleFound = await this.rolesService.getByUid(uid); + + if (!roleFound) { + this.httpNotFoundRequest(response, "role not found"); + return; + } + + //init IRole resource with request body values + const roleEntity = Role.hydrate(req.body); + + //validate role + await validateOrReject(roleEntity, { groups: ["updateRole"] }); + + //call service to get prisma entity + const roleEntityUpdated = await this.rolesService.update(roleEntity); + + //Hydrate ressource with prisma entity + const role = Role.hydrate(roleEntityUpdated, { + strategy: "excludeAll", + }); + + //success + this.httpSuccess(response, role); + } catch (error) { + this.httpInternalError(response, error); + return; + } + } }