sso.fb1.uni-bremen.de/docker/compose/externals/data/process_emails.py
2025-04-04 22:37:43 +02:00

30 lines
1.1 KiB
Python

from email_validator import validate_email # type: ignore
import email_validator
import json
from add_user import add_keycloak_user
def process_emails(
mail_address: str,
blocked_user_file: str = "blocked_users.json",
) -> tuple[bool, str]:
with open(blocked_user_file, "r") as file:
blocked_users: dict = json.load(file)
if (mail_address == "") or (mail_address is None):
return False, "eMail address empty or missing."
try:
emailinfo = validate_email(mail_address, check_deliverability=False)
mail_address = emailinfo.normalized
except email_validator.exceptions_types.EmailSyntaxError:
return False, f"{mail_address} -- eMail address failed validate_email (EmailSyntaxError)"
except email_validator.exceptions_types.EmailNotValidError:
return False, f"{mail_address} -- eMail address failed validate_email (EmailNotValidError)"
for blocked_user in blocked_users["blocked_users"]:
if mail_address == blocked_user:
return False, f"{mail_address} -- eMail address is listed as blocked."
return add_keycloak_user(mail_address)