feat: add verify otp endpoint
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user