From a5ab2ad896e9e8f66ea4dd7262fdd233f1e01564 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Fri, 2 Jan 2026 01:45:15 -0300 Subject: [PATCH] portal: derive mail username from Keycloak email --- backend/atlas_portal/routes/account.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/backend/atlas_portal/routes/account.py b/backend/atlas_portal/routes/account.py index 0bb514a..a0dab96 100644 --- a/backend/atlas_portal/routes/account.py +++ b/backend/atlas_portal/routes/account.py @@ -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}, }