fix(portal): persist mailu attributes
This commit is contained in:
parent
13b0099c29
commit
71678a4819
@ -155,8 +155,9 @@ class KeycloakAdminClient:
|
|||||||
if not isinstance(attrs, dict):
|
if not isinstance(attrs, dict):
|
||||||
attrs = {}
|
attrs = {}
|
||||||
attrs[key] = [value]
|
attrs[key] = [value]
|
||||||
full["attributes"] = attrs
|
# Keycloak rejects PUTs that include read-only fields from the GET payload (400 Bad Request).
|
||||||
self.update_user(user_id, full)
|
# Update only the attributes we intend to change.
|
||||||
|
self.update_user(user_id, {"attributes": attrs})
|
||||||
|
|
||||||
def get_group_id(self, group_name: str) -> str | None:
|
def get_group_id(self, group_name: str) -> str | None:
|
||||||
cached = self._group_id_cache.get(group_name)
|
cached = self._group_id_cache.get(group_name)
|
||||||
|
|||||||
@ -129,13 +129,20 @@ def provision_access_request(request_code: str) -> ProvisionResult:
|
|||||||
try:
|
try:
|
||||||
full = admin_client().get_user(user_id)
|
full = admin_client().get_user(user_id)
|
||||||
attrs = full.get("attributes") or {}
|
attrs = full.get("attributes") or {}
|
||||||
|
mailu_from_attr: str | None = None
|
||||||
if isinstance(attrs, dict):
|
if isinstance(attrs, dict):
|
||||||
raw_mailu = attrs.get(MAILU_EMAIL_ATTR)
|
raw_mailu = attrs.get(MAILU_EMAIL_ATTR)
|
||||||
if isinstance(raw_mailu, list) and raw_mailu and isinstance(raw_mailu[0], str):
|
if isinstance(raw_mailu, list):
|
||||||
mailu_email = raw_mailu[0]
|
for item in raw_mailu:
|
||||||
elif isinstance(raw_mailu, str) and raw_mailu:
|
if isinstance(item, str) and item.strip():
|
||||||
mailu_email = raw_mailu
|
mailu_from_attr = item.strip()
|
||||||
if not mailu_email:
|
break
|
||||||
|
elif isinstance(raw_mailu, str) and raw_mailu.strip():
|
||||||
|
mailu_from_attr = raw_mailu.strip()
|
||||||
|
|
||||||
|
if mailu_from_attr:
|
||||||
|
mailu_email = mailu_from_attr
|
||||||
|
else:
|
||||||
mailu_email = f"{username}@{settings.MAILU_DOMAIN}"
|
mailu_email = f"{username}@{settings.MAILU_DOMAIN}"
|
||||||
admin_client().set_user_attribute(username, MAILU_EMAIL_ATTR, mailu_email)
|
admin_client().set_user_attribute(username, MAILU_EMAIL_ATTR, mailu_email)
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user