portal: derive mail username from Keycloak email

This commit is contained in:
Brad Stein 2026-01-02 01:45:15 -03:00
parent a1fbfe604e
commit a5ab2ad896

View File

@ -19,26 +19,30 @@ def register(app) -> None:
return resp
username = g.keycloak_username
mailu_username = ""
if g.keycloak_email and g.keycloak_email.lower().endswith(f"@{settings.MAILU_DOMAIN.lower()}"):
mailu_username = g.keycloak_email
elif username:
mailu_username = f"{username}@{settings.MAILU_DOMAIN}"
keycloak_email = g.keycloak_email or ""
mailu_app_password = ""
if admin_client().ready() and username:
try:
user = admin_client().find_user(username)
user_id = (user or {}).get("id") or ""
user = admin_client().find_user(username) or {}
user_id = user.get("id") or ""
if user_id:
full = admin_client().get_user(str(user_id))
if not keycloak_email:
keycloak_email = str(full.get("email") or "")
attrs = full.get("attributes") or {}
if isinstance(attrs, dict):
values = attrs.get("mailu_app_password") or []
if isinstance(values, list) and values:
mailu_app_password = str(values[0])
except Exception:
mailu_app_password = ""
pass
mailu_username = ""
if keycloak_email and keycloak_email.lower().endswith(f"@{settings.MAILU_DOMAIN.lower()}"):
mailu_username = keycloak_email
elif username:
mailu_username = f"{username}@{settings.MAILU_DOMAIN}"
mailu_status = "ready"
jellyfin_status = "ready"
@ -49,7 +53,7 @@ def register(app) -> None:
return jsonify(
{
"user": {"username": username, "email": g.keycloak_email, "groups": g.keycloak_groups},
"user": {"username": username, "email": keycloak_email, "groups": g.keycloak_groups},
"mailu": {"status": mailu_status, "username": mailu_username, "app_password": mailu_app_password},
"jellyfin": {"status": jellyfin_status, "username": username},
}