Files
lisglosips/apps/api/src/modules/users/users.controller.ts
T

46 lines
1.8 KiB
TypeScript

import { Body, Controller, Delete, Get, Inject, Param, Patch, Post } from '@nestjs/common';
import { ApiTags } from '@nestjs/swagger';
import { AuditAction } from '../audit/audit.metadata.js';
import { CurrentUserParam, RequirePermissions, type CurrentUser } from '../security/security.metadata.js';
import { UsersService } from './users.service.js';
@ApiTags('users')
@Controller('users')
export class UsersController {
constructor(@Inject(UsersService) private readonly usersService: UsersService) {}
@Get()
@RequirePermissions('users.view')
list() {
return this.usersService.list();
}
@Post()
@RequirePermissions('users.manage')
@AuditAction({ module: 'users', action: 'create', objectType: 'user' })
create(@Body() body: unknown, @CurrentUserParam() currentUser?: CurrentUser) {
return this.usersService.create(body as never, currentUser?.id);
}
@Patch(':id')
@RequirePermissions('users.manage')
@AuditAction({ module: 'users', action: 'update', objectType: 'user', objectIdParam: 'id' })
update(@Param('id') id: string, @Body() body: unknown, @CurrentUserParam() currentUser?: CurrentUser) {
return this.usersService.update(id, body as never, currentUser?.id);
}
@Post(':id/reset-password')
@RequirePermissions('users.manage')
@AuditAction({ module: 'users', action: 'reset_password', objectType: 'user', objectIdParam: 'id' })
resetPassword(@Param('id') id: string, @Body() body: unknown, @CurrentUserParam() currentUser?: CurrentUser) {
return this.usersService.resetPassword(id, body as never, currentUser?.id);
}
@Delete(':id')
@RequirePermissions('users.manage')
@AuditAction({ module: 'users', action: 'delete', objectType: 'user', objectIdParam: 'id' })
remove(@Param('id') id: string, @CurrentUserParam() currentUser?: CurrentUser) {
return this.usersService.remove(id, currentUser?.id);
}
}