diff --git a/src/Profesor/profesor.controller.ts b/src/Profesor/profesor.controller.ts index 9f98dbd..b15f262 100644 --- a/src/Profesor/profesor.controller.ts +++ b/src/Profesor/profesor.controller.ts @@ -6,12 +6,12 @@ import {RolesGuard} from '../permissions/roles.guard' import {Role} from '../permissions/role.enum' @Controller('profesor') -//@UseGuards(RolesGuard) +@UseGuards(RolesGuard) export class ProfesorController { constructor(private profesorService: ProfesorService) {} @Post() - //@Roles(Role.Responsable,Role.Admin) + @Roles(Role.Responsable,Role.Admin) async register(@Body() data: profesorDto) { return this.profesorService.register(data); } @@ -30,13 +30,13 @@ export class ProfesorController { } @Put(':id_profesor') - //@Roles(Role.Responsable,Role.Admin) + @Roles(Role.Responsable,Role.Admin) async postModify(@Param('id_profesor', ParseIntPipe) id_profesor: number, @Body() data: profesorDto) { return this.profesorService.modify(id_profesor, data); } @Delete(':id_profesor') - //@Roles(Role.Responsable,Role.Admin) + @Roles(Role.Responsable,Role.Admin) async remove(@Param('id_profesor', ParseIntPipe) id_profesor: number) { return this.profesorService.remove(id_profesor); } diff --git a/src/permissions/roles.guard.ts b/src/permissions/roles.guard.ts index a1fb47c..15a246f 100644 --- a/src/permissions/roles.guard.ts +++ b/src/permissions/roles.guard.ts @@ -16,15 +16,18 @@ export class RolesGuard implements CanActivate { ]); if (!requiredRoles) { - return true; + return true; // Si no hay roles requeridos, se permite el acceso } - const { user } = context.switchToHttp().getRequest(); - - if (!user || !user.roles || user.roles.length === 0) { - return false; + const request = context.switchToHttp().getRequest(); + const permissionsHeader = request.headers['permissions']; + + if (!permissionsHeader) { + return false; // Si no hay encabezado 'permissions', se niega el acceso } - return requiredRoles.some(role => user.roles.includes(role)); + const userRoles: Role[] = JSON.parse(permissionsHeader); + + return requiredRoles.some(role => userRoles.includes(role)); } }