35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { Controller, Post, Patch, Body, Param } from '@nestjs/common'
|
|
import { UsersService } from './users.service'
|
|
import { ApiTags, ApiOperation } from '@nestjs/swagger'
|
|
import { CreateUserDto } from './dto/create-user.dto'
|
|
import { LoginInputDto } from './dto/login-input.dto'
|
|
import { ResetPassword } from './dto/reset-password.dto'
|
|
|
|
@Controller('api/users')
|
|
@ApiTags('Users')
|
|
export class UsersController {
|
|
constructor(private readonly usersService: UsersService) {}
|
|
|
|
@Post()
|
|
@ApiOperation({ summary: '邮箱注册' })
|
|
async registerByEmail(@Body() userData: CreateUserDto) {
|
|
return this.usersService.registerByEmail(userData)
|
|
}
|
|
|
|
// TODO: 限制调用频率,避免暴力破解
|
|
@Post('token')
|
|
@ApiOperation({ summary: '邮箱登录' })
|
|
async loginByEmail(@Body() user: LoginInputDto) {
|
|
return this.usersService.loginByEmail(user.email, user.password)
|
|
}
|
|
|
|
@Patch(':id/?field=password')
|
|
@ApiOperation({ summary: '找回密码' })
|
|
async forgetPassword(
|
|
@Body() payload: ResetPassword,
|
|
@Param('id') userId: string,
|
|
) {
|
|
return this.usersService.resetPasswordByEmail(payload, userId)
|
|
}
|
|
}
|