feat: add verify otp endpoint

This commit is contained in:
2026-02-26 09:14:30 +03:30
parent b9adbef7e8
commit 8212ede785
7 changed files with 65 additions and 7 deletions
+2 -2
View File
@@ -20,7 +20,7 @@ export class AuthController {
@Post('verify-otp')
@HttpCode(200)
public verifyOTP(@Body() verifyOtpDto: VerifyOtpDTO) {
return verifyOtpDto;
public async verifyOTP(@Body() verifyOtpDto: VerifyOtpDTO) {
return await this.authService.verifyOTP(verifyOtpDto);
}
}
+7 -1
View File
@@ -8,6 +8,7 @@ import { JwtModule } from '@nestjs/jwt';
import { ConfigService } from '@nestjs/config';
import { LoginProvider } from './providers/login.provider';
import { GenerateTokenProvider } from './providers/generate-token.provider';
import { VerifyOTPProvider } from './providers/verify-otp.provider';
@Module({
imports: [
@@ -27,6 +28,11 @@ import { GenerateTokenProvider } from './providers/generate-token.provider';
}),
],
controllers: [AuthController],
providers: [AuthService, GenerateTokenProvider, LoginProvider],
providers: [
AuthService,
GenerateTokenProvider,
LoginProvider,
VerifyOTPProvider,
],
})
export class AuthModule {}
@@ -0,0 +1,7 @@
POST http://localhost:3000/users/verify-otp
Content-Type: application/json
{
"phone": "09126093033",
"otp": "57903"
}
+10 -1
View File
@@ -1,6 +1,8 @@
import { Injectable } from '@nestjs/common';
import { LoginDTO } from '../dtos/login.dto';
import { LoginProvider } from './login.provider';
import { VerifyOtpDTO } from '../dtos/verify-otp.dto';
import { VerifyOTPProvider } from './verify-otp.provider';
@Injectable()
export class AuthService {
@@ -9,11 +11,18 @@ export class AuthService {
* Inject Login Provider
*/
private readonly loginProvider: LoginProvider,
/**
* Inject Verify OTP Provider
*/
private readonly verifyOTPProvider: VerifyOTPProvider,
) {}
public async logIn(loginDto: LoginDTO) {
return await this.loginProvider.logIn(loginDto);
}
// public async verifyOTP(verifyOtpDto: VerifyOtpDTO) {}
public async verifyOTP(verifyOtpDto: VerifyOtpDTO) {
return await this.verifyOTPProvider.verifyOTP(verifyOtpDto);
}
}
@@ -0,0 +1,36 @@
import { Injectable } from '@nestjs/common';
import { VerifyOtpDTO } from '../dtos/verify-otp.dto';
import { OtpService } from '@/modules/otp/providers/otp.service';
import { UsersService } from '@/modules/users/providers/users.service';
import { GenerateTokenProvider } from './generate-token.provider';
import { randomUUID } from 'crypto';
@Injectable()
export class VerifyOTPProvider {
constructor(
/**
* Inject OTP Service
*/
private readonly otpService: OtpService,
/**
* Inject User Service
*/
private readonly usersService: UsersService,
/**
* Inject Generate Token Provider
*/
private readonly generateTokenProvider: GenerateTokenProvider,
) {}
public async verifyOTP(verifyOtpDto: VerifyOtpDTO) {
const { phone, otp } = verifyOtpDto;
const otpInstance = await this.otpService.verifyOTP(phone, otp);
const user = await this.usersService.createOne(otpInstance.phone);
const jti = randomUUID();
return await this.generateTokenProvider.generateTokens(user, jti);
}
}