api:更新注册接口支持邮箱验证码
- 注册接口传递邮箱验证码参数到服务层 - 更新 API 文档描述,说明验证码使用流程 - 添加发送邮箱验证码接口 - 添加验证邮箱验证码接口 - 添加重新发送邮箱验证码接口
This commit is contained in:
@@ -22,7 +22,7 @@
|
|||||||
import { Controller, Post, Put, Body, HttpCode, HttpStatus, ValidationPipe, UsePipes, Logger } from '@nestjs/common';
|
import { Controller, Post, Put, Body, HttpCode, HttpStatus, ValidationPipe, UsePipes, Logger } from '@nestjs/common';
|
||||||
import { ApiTags, ApiOperation, ApiResponse as SwaggerApiResponse, ApiBody } from '@nestjs/swagger';
|
import { ApiTags, ApiOperation, ApiResponse as SwaggerApiResponse, ApiBody } from '@nestjs/swagger';
|
||||||
import { LoginService, ApiResponse, LoginResponse } from './login.service';
|
import { LoginService, ApiResponse, LoginResponse } from './login.service';
|
||||||
import { LoginDto, RegisterDto, GitHubOAuthDto, ForgotPasswordDto, ResetPasswordDto, ChangePasswordDto } from './login.dto';
|
import { LoginDto, RegisterDto, GitHubOAuthDto, ForgotPasswordDto, ResetPasswordDto, ChangePasswordDto, EmailVerificationDto, SendEmailVerificationDto } from './login.dto';
|
||||||
import {
|
import {
|
||||||
LoginResponseDto,
|
LoginResponseDto,
|
||||||
RegisterResponseDto,
|
RegisterResponseDto,
|
||||||
@@ -80,7 +80,7 @@ export class LoginController {
|
|||||||
*/
|
*/
|
||||||
@ApiOperation({
|
@ApiOperation({
|
||||||
summary: '用户注册',
|
summary: '用户注册',
|
||||||
description: '创建新用户账户'
|
description: '创建新用户账户。如果提供邮箱,需要先调用发送验证码接口获取验证码,然后在注册时提供验证码进行验证。'
|
||||||
})
|
})
|
||||||
@ApiBody({ type: RegisterDto })
|
@ApiBody({ type: RegisterDto })
|
||||||
@SwaggerApiResponse({
|
@SwaggerApiResponse({
|
||||||
@@ -105,7 +105,8 @@ export class LoginController {
|
|||||||
password: registerDto.password,
|
password: registerDto.password,
|
||||||
nickname: registerDto.nickname,
|
nickname: registerDto.nickname,
|
||||||
email: registerDto.email,
|
email: registerDto.email,
|
||||||
phone: registerDto.phone
|
phone: registerDto.phone,
|
||||||
|
email_verification_code: registerDto.email_verification_code
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,4 +251,96 @@ export class LoginController {
|
|||||||
changePasswordDto.new_password
|
changePasswordDto.new_password
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发送邮箱验证码
|
||||||
|
*
|
||||||
|
* @param sendEmailVerificationDto 发送验证码数据
|
||||||
|
* @returns 发送结果
|
||||||
|
*/
|
||||||
|
@ApiOperation({
|
||||||
|
summary: '发送邮箱验证码',
|
||||||
|
description: '向指定邮箱发送验证码'
|
||||||
|
})
|
||||||
|
@ApiBody({ type: SendEmailVerificationDto })
|
||||||
|
@SwaggerApiResponse({
|
||||||
|
status: 200,
|
||||||
|
description: '验证码发送成功',
|
||||||
|
type: ForgotPasswordResponseDto
|
||||||
|
})
|
||||||
|
@SwaggerApiResponse({
|
||||||
|
status: 400,
|
||||||
|
description: '请求参数错误'
|
||||||
|
})
|
||||||
|
@SwaggerApiResponse({
|
||||||
|
status: 429,
|
||||||
|
description: '发送频率过高'
|
||||||
|
})
|
||||||
|
@Post('send-email-verification')
|
||||||
|
@HttpCode(HttpStatus.OK)
|
||||||
|
@UsePipes(new ValidationPipe({ transform: true }))
|
||||||
|
async sendEmailVerification(@Body() sendEmailVerificationDto: SendEmailVerificationDto): Promise<ApiResponse<{ verification_code?: string }>> {
|
||||||
|
return await this.loginService.sendEmailVerification(sendEmailVerificationDto.email);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证邮箱验证码
|
||||||
|
*
|
||||||
|
* @param emailVerificationDto 邮箱验证数据
|
||||||
|
* @returns 验证结果
|
||||||
|
*/
|
||||||
|
@ApiOperation({
|
||||||
|
summary: '验证邮箱验证码',
|
||||||
|
description: '使用验证码验证邮箱'
|
||||||
|
})
|
||||||
|
@ApiBody({ type: EmailVerificationDto })
|
||||||
|
@SwaggerApiResponse({
|
||||||
|
status: 200,
|
||||||
|
description: '邮箱验证成功',
|
||||||
|
type: CommonResponseDto
|
||||||
|
})
|
||||||
|
@SwaggerApiResponse({
|
||||||
|
status: 400,
|
||||||
|
description: '验证码错误或已过期'
|
||||||
|
})
|
||||||
|
@Post('verify-email')
|
||||||
|
@HttpCode(HttpStatus.OK)
|
||||||
|
@UsePipes(new ValidationPipe({ transform: true }))
|
||||||
|
async verifyEmail(@Body() emailVerificationDto: EmailVerificationDto): Promise<ApiResponse> {
|
||||||
|
return await this.loginService.verifyEmailCode(
|
||||||
|
emailVerificationDto.email,
|
||||||
|
emailVerificationDto.verification_code
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重新发送邮箱验证码
|
||||||
|
*
|
||||||
|
* @param sendEmailVerificationDto 发送验证码数据
|
||||||
|
* @returns 发送结果
|
||||||
|
*/
|
||||||
|
@ApiOperation({
|
||||||
|
summary: '重新发送邮箱验证码',
|
||||||
|
description: '重新向指定邮箱发送验证码'
|
||||||
|
})
|
||||||
|
@ApiBody({ type: SendEmailVerificationDto })
|
||||||
|
@SwaggerApiResponse({
|
||||||
|
status: 200,
|
||||||
|
description: '验证码重新发送成功',
|
||||||
|
type: ForgotPasswordResponseDto
|
||||||
|
})
|
||||||
|
@SwaggerApiResponse({
|
||||||
|
status: 400,
|
||||||
|
description: '邮箱已验证或用户不存在'
|
||||||
|
})
|
||||||
|
@SwaggerApiResponse({
|
||||||
|
status: 429,
|
||||||
|
description: '发送频率过高'
|
||||||
|
})
|
||||||
|
@Post('resend-email-verification')
|
||||||
|
@HttpCode(HttpStatus.OK)
|
||||||
|
@UsePipes(new ValidationPipe({ transform: true }))
|
||||||
|
async resendEmailVerification(@Body() sendEmailVerificationDto: SendEmailVerificationDto): Promise<ApiResponse<{ verification_code?: string }>> {
|
||||||
|
return await this.loginService.resendEmailVerification(sendEmailVerificationDto.email);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user