nest-project/src/users/users.controller.ts
2023-02-22 16:09:31 +08:00

54 lines
1.6 KiB
TypeScript

import {
Controller,
Get,
Post,
Patch,
Body,
UseInterceptors,
} from '@nestjs/common'
import { UsersService } from './users.service'
import { ApiTags, ApiOperation } from '@nestjs/swagger'
import { User } from 'src/common/decorators/user.decorator'
import { NeedAuth } from 'src/common/decorators/need-auth.decorator'
import { PasswordInterceptor } from 'src/common/interceptors/password.interceptor'
import { PrismaService } from 'nestjs-prisma'
import { UserEntity } from './entities/user.entity'
import { CreateUserDto } from './dto/create-user.dto'
import { UpdatePassword } from './dto/update-password.dto'
@ApiTags('User')
@Controller('api/users')
export class UsersController {
constructor(
private readonly userService: UsersService,
private readonly prismaService: PrismaService,
) {}
@ApiOperation({ summary: '获取用户信息' })
@UseInterceptors(PasswordInterceptor)
@NeedAuth()
@Get('me')
async getUserInfo(@User('userId') userId: string): Promise<UserEntity> {
return this.prismaService.user.findUniqueOrThrow({ where: { id: userId } })
}
@ApiOperation({ summary: '注册用户' })
@Post()
async register(@Body() userData: CreateUserDto) {
return this.userService.register(userData)
}
@ApiOperation({ summary: '修改密码' })
@UseInterceptors(PasswordInterceptor)
@Patch('me/password')
async updatePassord(@Body() payload: UpdatePassword): Promise<UserEntity> {
return this.userService.updatePassword(payload)
}
// @ApiOperation({ summary: '修改邮箱' })
// @Patch('me/email')
// async updateEmail(@Body() payload: unknown) {
// return
// }
}