feat: 解除锁屏api

This commit is contained in:
louis 2024-03-01 16:00:42 +08:00
parent fab8618bb2
commit 24309f47d2
3 changed files with 28 additions and 5 deletions

View File

@ -12,6 +12,8 @@ import { LoginDto, RegisterDto } from './dto/auth.dto';
import { LocalGuard } from './guards/local.guard';
import { LoginToken } from './models/auth.model';
import { CaptchaService } from './services/captcha.service';
import { AuthUser } from './decorators/auth-user.decorator';
import { ApiSecurityAuth } from '~/common/decorators/swagger.decorator';
@ApiTags('Auth - 认证模块')
@UseGuards(LocalGuard)
@ -37,6 +39,15 @@ export class AuthController {
return { token };
}
@Post('unlock')
@ApiSecurityAuth()
@ApiOperation({ summary: '屏幕解锁使用密码和token' })
@ApiResult({ type: LoginToken })
async unlock(@Body() dto: LoginDto, @AuthUser() user: IAuthUser): Promise<Boolean> {
await this.authService.unlock(user.uid, dto.password);
return true;
}
@Post('register')
@ApiOperation({ summary: '注册' })
async register(@Body() dto: RegisterDto): Promise<void> {

View File

@ -80,6 +80,19 @@ export class AuthService {
return token.accessToken;
}
/**
*
* null则账号密码有误
*/
async unlock(uid: number, password: string): Promise<void> {
const user = await this.userService.findUserById(uid);
if (isEmpty(user)) throw new BusinessException(ErrorEnum.INVALID_USERNAME_PASSWORD);
const comparePassword = md5(`${password}${user.psalt}`);
if (user.password !== comparePassword)
throw new BusinessException(ErrorEnum.INVALID_USERNAME_PASSWORD);
}
/**
*
*/

View File

@ -1,11 +1,10 @@
import { ApiProperty } from '@nestjs/swagger';
import { IsString, Matches, MaxLength, MinLength } from 'class-validator';
import { IsOptional, IsString, Matches, MaxLength, MinLength } from 'class-validator';
export class LoginDto {
@ApiProperty({ description: '手机号/邮箱' })
@IsString()
@MinLength(4)
@IsOptional()
username: string;
@ApiProperty({ description: '密码', example: 'a123456' })
@ -15,11 +14,11 @@ export class LoginDto {
password: string;
@ApiProperty({ description: '验证码标识' })
@IsString()
@IsOptional()
captchaId: string;
@ApiProperty({ description: '用户输入的验证码' })
@IsString()
@IsOptional()
@MinLength(4)
@MaxLength(4)
verifyCode: string;