src/models/user/user.controller.ts
user
Exposes user CRUD endpoints
Methods |
|
create | ||||||
create(createUserDto: CreateUserDto)
|
||||||
Decorators :
@ApiOperation({summary: 'Creates a new user'})
|
||||||
Defined in src/models/user/user.controller.ts:37
|
||||||
Creates a new user
Parameters :
Returns :
Promise<void>
|
Async findById | ||||||
findById(request: Request)
|
||||||
Decorators :
@ApiOperation({summary: 'Gets user's own profile'})
|
||||||
Defined in src/models/user/user.controller.ts:45
|
||||||
Returns user's own profile information without password
Parameters :
Returns :
Promise<UserWithoutPassword>
|
remove | |||||||||
remove(request: Request, deleteUserDto: DeleteUserDto)
|
|||||||||
Decorators :
@ApiOperation({summary: 'Deletes user'})
|
|||||||||
Defined in src/models/user/user.controller.ts:79
|
|||||||||
Deletes user and all user related information from the system
Parameters :
Returns :
Promise<void>
|
update | |||||||||
update(request: Request, updateUserDto: UpdateUserDto)
|
|||||||||
Decorators :
@ApiOperation({summary: 'Updates user'})
|
|||||||||
Defined in src/models/user/user.controller.ts:55
|
|||||||||
Updates user information
Parameters :
Returns :
Promise<UserWithoutPassword>
|
updateUserRole | ||||||
updateUserRole(updateUserRoleDto: UpdateUserRoleDto)
|
||||||
Decorators :
@ApiOperation({summary: 'Admin set user's role'})
|
||||||
Defined in src/models/user/user.controller.ts:68
|
||||||
Updates user role, only for admins
Parameters :
Returns :
Promise<UserWithoutPassword>
|
import {
Body,
Controller,
Delete,
Get,
HttpCode,
HttpStatus,
Patch,
Post,
Req,
} from '@nestjs/common';
import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
import { Request } from 'express';
import { Public } from 'src/auth/public.decorator';
import { IsAdmin } from 'src/common/decorators/is-admin.decorator';
import { CreateUserDto } from './dto/create-user.dto';
import { DeleteUserDto } from './dto/delete-user.dto';
import { UpdateUserRoleDto } from './dto/update-user-role.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { UserWithoutPassword } from './entities/user-without-password.entity';
import { UserService } from './user.service';
/** Exposes user CRUD endpoints */
@ApiTags('user')
@Controller('user')
export class UserController {
/** Exposes user CRUD endpoints
*
* Instantiate class and UserService dependency
*/
constructor(private readonly userService: UserService) {}
/** Creates a new user */
@ApiOperation({ summary: 'Creates a new user' })
@Public()
@Post()
create(@Body() createUserDto: CreateUserDto): Promise<void> {
return this.userService.create(createUserDto);
}
/** Returns user's own profile information without password */
@ApiOperation({ summary: "Gets user's own profile" })
@ApiBearerAuth()
@Get()
async findById(@Req() request: Request): Promise<UserWithoutPassword> {
const userId = request.user['userId'];
return this.userService.findById(userId);
}
/** Updates user information */
@ApiOperation({ summary: 'Updates user' })
@ApiBearerAuth()
@Patch()
update(
@Req() request: Request,
@Body() updateUserDto: UpdateUserDto,
): Promise<UserWithoutPassword> {
const userId = request.user['userId'];
return this.userService.update(userId, updateUserDto);
}
/** Updates user role, only for admins */
@ApiOperation({ summary: "Admin set user's role" })
@IsAdmin()
@Patch('role')
updateUserRole(
@Body() updateUserRoleDto: UpdateUserRoleDto,
): Promise<UserWithoutPassword> {
return this.userService.updateUserRole(updateUserRoleDto);
}
/** Deletes user and all user related information from the system */
@ApiOperation({ summary: 'Deletes user' })
@ApiBearerAuth()
@Delete()
@HttpCode(HttpStatus.NO_CONTENT)
remove(
@Req() request: Request,
@Body() deleteUserDto: DeleteUserDto,
): Promise<void> {
const userId = request.user['userId'];
return this.userService.remove(userId, deleteUserDto);
}
}