You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.6 KiB
49 lines
1.6 KiB
import { Controller, Post, Body, UseGuards, Get, Request, Put, Param } from "@nestjs/common"; |
|
import { UsersService } from "./users.service"; |
|
import { User } from "./entities/user.entity"; |
|
import { CreateUserDto } from "./dto/create-user.dto"; |
|
import { LoginUserDto } from "./dto/login-user.dto"; |
|
import { JwtAuthGuard } from "src/guard/auth.guard"; |
|
import { UpdateUserDto } from "./dto/update-user.dto"; |
|
import { RoleGuard } from "src/guard/role.guard"; |
|
|
|
@Controller("user") |
|
export class UsersController { |
|
constructor(private readonly usersService: UsersService) {} |
|
//register as user |
|
@Post("register") |
|
async register(@Body() createUserDto: CreateUserDto): Promise<{message}> { |
|
return this.usersService.register(createUserDto); |
|
} |
|
//login as user |
|
@Post("login") |
|
async login(@Body() loginUserDto: LoginUserDto): Promise<{ token }> { |
|
return this.usersService.login(loginUserDto); |
|
} |
|
|
|
//retrieve a user information |
|
@UseGuards(JwtAuthGuard) |
|
@Get() |
|
async getProfile(@Request() req): Promise<User> { |
|
const userId = req.user.id; |
|
return this.usersService.getProfile(userId); |
|
} |
|
//edit user profile |
|
@UseGuards(JwtAuthGuard) |
|
@Put() |
|
async editProfile(@Request() req, @Body() updateUserDto: UpdateUserDto) { |
|
const userId = req.user.id; |
|
return this.usersService.editProfile(userId, updateUserDto); |
|
} |
|
//get users list (admin) |
|
@UseGuards(RoleGuard) |
|
@Get("users") |
|
async findAll(): Promise<User[]> { |
|
return this.usersService.findAll(); |
|
} |
|
@UseGuards(RoleGuard) |
|
@Get("users/:id") |
|
async findSpecificUserInfoByUser(@Param("id") id): Promise<User> { |
|
return this.usersService.findSpecificUserInfoByUser(id); |
|
} |
|
}
|
|
|