FEAT: Roles WIP

This commit is contained in:
Gabriel Rosa
2022-07-14 10:23:04 -03:00
parent d5cd562860
commit 14cfc46492
15 changed files with 247 additions and 116 deletions
+38 -24
View File
@@ -9,25 +9,28 @@ import {
Post,
Put,
Query,
UseFilters,
} from '@nestjs/common';
import { ApiResponse, ApiTags } from '@nestjs/swagger';
import { User } from 'src/authentication/user.decorator';
import { ApiCreatedResponse, ApiOkResponse, ApiTags } from '@nestjs/swagger';
import { RequestUser, User } from 'src/authentication/user.decorator';
import { DadosferaLogger } from 'dadosfera-logs';
import { RolesService } from './roles.service';
import {
AssignPermissionsToRoleReq,
AssignPermissionsToRoleRes,
AssignPermissionsToRoleReq as grantPermissionsToRoleReq,
AssignPermissionsToRoleRes as GrantPermissionsToRoleRes,
CreateRoleReq,
CreateRoleRes,
GetRolesByCustomerReq,
GetRolesByCustomerRes,
UnassignPermissionsToRoleReq,
UnassignPermissionsToRoleRes,
UnassignPermissionsToRoleReq as RevokePermissionsToRoleReq,
UnassignPermissionsToRoleRes as RevokePermissionsToRoleRes,
UpdateRoleReq,
UpdateRoleRes,
} from './dto/entities';
import { GrpcToHttpExceptionFilter } from 'src/error/grpc-to-http-exception.filter';
@ApiTags('Roles')
@UseFilters(new GrpcToHttpExceptionFilter())
@Controller('roles')
export class RolesController {
logger: any;
@@ -39,46 +42,57 @@ export class RolesController {
) {
this.logger = dadosferaLogger.logger;
}
@Get()
@ApiResponse({ type: GetRolesByCustomerRes })
@ApiOkResponse({ type: GetRolesByCustomerRes })
async getRolesByCustomer(
@User() user,
@User() user: RequestUser,
@Query() filters: GetRolesByCustomerReq,
) {
this.logger.info('getRolesByCustomer', { user });
this.rolesService.getRolesByCustomer(filters);
return await this.rolesService.getRolesByCustomer(
filters,
user.customer_id,
);
}
@Post()
@ApiResponse({ type: CreateRoleRes })
async createRole(@User() user, @Body() body: CreateRoleReq) {
@ApiCreatedResponse({ type: CreateRoleRes })
async createRole(@User() user: RequestUser, @Body() body: CreateRoleReq) {
this.logger.info('createRole', { user });
return await this.rolesService.createRole(body, user.customer_id);
}
@Delete(':id')
async deleteRole(@User() user, @Param('id') id: string) {
async deleteRole(@User() user: RequestUser, @Param('id') id: string) {
this.logger.info('deleteRole', { user });
return await this.rolesService.removeRole(id);
}
@Put('permissions')
@ApiResponse({ type: AssignPermissionsToRoleRes })
async assignPermissionsToRole(
@User() user,
@Body() body: AssignPermissionsToRoleReq,
@ApiOkResponse({ type: GrantPermissionsToRoleRes })
async grantPermissionsToRole(
@User() user: RequestUser,
@Body() body: grantPermissionsToRoleReq,
) {
this.logger.info('assignPermissionsToRole', { user });
this.logger.info('grantPermissionsToRole', { user });
return await this.rolesService.grantPermissionsToRole(body);
}
@Delete('permissions')
@ApiResponse({ type: UnassignPermissionsToRoleRes })
async unassignPermissionsToRole(
@User() user,
@Body() body: UnassignPermissionsToRoleReq,
@ApiOkResponse({ type: RevokePermissionsToRoleRes })
async revokePermissionsToRole(
@User() user: RequestUser,
@Body() body: RevokePermissionsToRoleReq,
) {
this.logger.info('unassignPermissionsToRole', { user });
this.logger.info('revokePermissionsToRole', { user });
return await this.rolesService.revokePermissionToRole(body);
}
@Patch(':id')
@ApiResponse({ type: UpdateRoleRes })
@ApiOkResponse({ type: UpdateRoleRes })
async updateRole(
@User() user,
@User() user: RequestUser,
@Param('id') id: string,
@Body() body: UpdateRoleReq,
) {