Update OTP value and valid time before resend

This commit is contained in:
coolneng 2020-10-03 14:50:19 +02:00
parent 6bf2cba862
commit ac16b4dfee
Signed by: coolneng
GPG Key ID: 9893DA236405AF57
4 changed files with 16 additions and 7 deletions

View File

@ -3,7 +3,7 @@ from sqlalchemy.orm import Session
from app.external_services import resend_otp, send_otp from app.external_services import resend_otp, send_otp
from app.schemas import * from app.schemas import *
from database.crud import add_user, get_db, verify_otp from database.crud import *
router = APIRouter() router = APIRouter()
@ -29,7 +29,8 @@ def validate_otp(data: OTPVerify, db: Session = Depends(get_db)):
return response return response
@router.post("/resendOTP", response_model=OTPresendResponse) @router.post("/resendOTP", response_model=OTPResendResponse)
def deliver_otp(data: OTPresend, db: Session = Depends(get_db)): def deliver_otp(data: OTPResend, db: Session = Depends(get_db)):
update_otp(data=data, db=db)
response = resend_otp(data=data, db=db) response = resend_otp(data=data, db=db)
return response return response

View File

@ -106,14 +106,16 @@ class OTPVerifyResponse(OTPBase):
orm_mode = True orm_mode = True
class OTPresend(BaseModel): class OTPResend(BaseModel):
email: EmailStr email: EmailStr
otp: int = randbits(20)
otp_valid_time: datetime = datetime.now() + timedelta(minutes=10)
class Config: class Config:
orm_mode = True orm_mode = True
class OTPresendResponse(UserCreateResponse): class OTPResendResponse(UserCreateResponse):
pass pass
class Config: class Config:

View File

@ -47,12 +47,19 @@ def fetch_user_by_email(data, db):
return db.query(Users).filter(Users.email == data.email).first() return db.query(Users).filter(Users.email == data.email).first()
def add_user(data, db): def create_user(data, db):
data.password = pwd_context.hash(data.password) data.password = pwd_context.hash(data.password)
user = insert_data(model="Users", data=data, db=db) user = insert_data(model="Users", data=data, db=db)
return user return user
def update_otp(data: OTPResend, db):
db.query(Users).filter(Users.email == data.email).update(
{Users.otp: data.otp, Users.otp_valid_time: data.otp_valid_time}
)
db.commit()
def activate_account(data: OTPVerify, db): def activate_account(data: OTPVerify, db):
db.query(Users).filter(Users.access_key == data.access_key).update( db.query(Users).filter(Users.access_key == data.access_key).update(
{Users.status: 1} {Users.status: 1}

View File

@ -13,7 +13,6 @@ mkShell {
python38Packages.alembic python38Packages.alembic
python38Packages.pytest python38Packages.pytest
python38Packages.twilio python38Packages.twilio
python38Packages.cryptography
python38Packages.passlib python38Packages.passlib
python38Packages.bcrypt python38Packages.bcrypt
sqlite sqlite