26 lines
1.1 KiB
Python
26 lines
1.1 KiB
Python
import logging
|
|
|
|
from fastapi import BackgroundTasks
|
|
|
|
import schemas
|
|
from chalicelib.core import users
|
|
from chalicelib.utils import email_helper, captcha, helper, smtp
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def reset(data: schemas.ForgetPasswordPayloadSchema, background_tasks: BackgroundTasks):
|
|
logger.info(f"forget password request for: {data.email}")
|
|
if helper.allow_captcha() and not captcha.is_valid(data.g_recaptcha_response):
|
|
return {"errors": ["Invalid captcha."]}
|
|
if not smtp.has_smtp():
|
|
return {"errors": ["Email delivery failed due to invalid SMTP configuration. Please contact your admin."]}
|
|
a_user = users.get_by_email_only(data.email)
|
|
if a_user:
|
|
invitation_link = users.generate_new_invitation(user_id=a_user["userId"])
|
|
background_tasks.add_task(email_helper.send_forgot_password,
|
|
recipient=data.email,
|
|
invitation_link=invitation_link)
|
|
else:
|
|
logger.warning(f"!!!invalid email address [{data.email}]")
|
|
return {"data": {"state": "A reset link will be sent if this email exists in our system."}}
|