Start
Input End
username
(email)
username != null No Return error Update password of user
Yes Yes No User != null Yes
Delete OTP record
Yes
Query user
by username Otp == null
No Query user by username
otpValidated == false
from otp record
user != null No
Otp == null
Otp is expired Update validated value of otp
Query otp record No
otpValue != otp record = true
Store otp, id, by otpId
otp wrong over 5 times
exipredTime,
Encrypt otp id
validation state,
Yes
username
Query otp
Encrypt otp id
record by
username
Send otp to user
Decrypt token to get otpId
email
Return encrypted id as a
token
Return encrypted id as a
token
Input otp received from
email Input new password
otp == null Yes Generate otp Send request with token Send request with token
No
Delete otp
record