Changeset View
Changeset View
Standalone View
Standalone View
swh/auth/django/utils.py
Show All 26 Lines | ) -> OIDCUser: | ||||
# compute an integer user identifier for Django User model | # compute an integer user identifier for Django User model | ||||
# by concatenating all groups of the UUID4 user identifier | # by concatenating all groups of the UUID4 user identifier | ||||
# generated by Keycloak and converting it from hex to decimal | # generated by Keycloak and converting it from hex to decimal | ||||
user_id = int("".join(decoded_token["sub"].split("-")), 16) | user_id = int("".join(decoded_token["sub"].split("-")), 16) | ||||
# create a Django user that will not be saved to database | # create a Django user that will not be saved to database | ||||
user = OIDCUser( | user = OIDCUser( | ||||
id=user_id, | id=user_id, | ||||
username=decoded_token["preferred_username"], | username=decoded_token.get("preferred_username", ""), | ||||
password="", | password="", | ||||
first_name=decoded_token["given_name"], | first_name=decoded_token.get("given_name", ""), | ||||
last_name=decoded_token["family_name"], | last_name=decoded_token.get("family_name", ""), | ||||
email=decoded_token["email"], | email=decoded_token.get("email", ""), | ||||
) | ) | ||||
# set is_staff user property based on groups | # set is_staff user property based on groups | ||||
if "groups" in decoded_token: | if "groups" in decoded_token: | ||||
user.is_staff = "/staff" in decoded_token["groups"] | user.is_staff = "/staff" in decoded_token["groups"] | ||||
if client_id: | if client_id: | ||||
# extract user permissions if any | # extract user permissions if any | ||||
▲ Show 20 Lines • Show All 50 Lines • Show Last 20 Lines |