Implement resend OTP

This commit is contained in:
coolneng 2020-09-28 18:46:44 +02:00
parent d87aade803
commit 97700c0855
Signed by: coolneng
GPG Key ID: 9893DA236405AF57
4 changed files with 40 additions and 4 deletions

View File

@ -1,7 +1,7 @@
from twilio.rest import Client
from constants import ACCOUNT_ID, SMS_SENDER, TOKEN
from database.crud import fetch_user_by_key
from database.crud import fetch_user_by_email, fetch_user_by_key
def create_twilio_client(account_sid, auth_token):
@ -13,4 +13,12 @@ def send_otp(data, db):
client = create_twilio_client(account_sid=ACCOUNT_ID, auth_token=TOKEN)
user = fetch_user_by_key(data=data, db=db)
message = "Your OTP code is {0}".format(user.otp)
client.messages.create(to=data.mobile, from_=SMS_SENDER, body=message)
# client.messages.create(to=data.mobile, from_=SMS_SENDER, body=message)
def resend_otp(data, db):
client = create_twilio_client(account_sid=ACCOUNT_ID, auth_token=TOKEN)
user = fetch_user_by_email(data=data, db=db)
message = "Your OTP code is {0}".format(user.otp)
# client.messages.create(to=data.mobile, from_=SMS_SENDER, body=message)
return user

View File

@ -2,7 +2,7 @@ from fastapi import APIRouter, Depends
from fastapi.security import OAuth2PasswordBearer
from sqlalchemy.orm import Session
from app.external_services import send_otp
from app.external_services import resend_otp, send_otp
from app.schemas import *
from database.crud import get_db, insert_data, verify_otp
@ -31,3 +31,9 @@ def log_in(
def validate_otp(data: OTPVerify, db: Session = Depends(get_db)):
response = verify_otp(data=data, db=db)
return response
@router.post("/resendOTP", response_model=OTPresendResponse)
def deliver_otp(data: OTPresend, db: Session = Depends(get_db)):
response = resend_otp(data=data, db=db)
return response

View File

@ -106,6 +106,20 @@ class OTPVerifyResponse(OTPBase):
orm_mode = True
class OTPresend(BaseModel):
email: EmailStr
class Config:
orm_mode = True
class OTPresendResponse(UserCreateResponse):
pass
class Config:
orm_mode = True
access_key: str
otp: int = Query(None, ge=6, le=6)

View File

@ -1,4 +1,4 @@
from pytest import mark, fixture
from pytest import mark
from secrets import token_hex
from app.schemas import *
@ -45,3 +45,11 @@ def test_otp_verification(get_test_db):
}
response = client.post("/otpVerification", json=data)
assert response.status_code == 200
def test_resend_otp():
data = {
"email": "testorganizer@odyfo.com",
}
response = client.post("/resendOTP", json=data)
assert response.status_code == 200