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

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);
}
}