ixg_platform/apps/users/auth.py

30 lines
1 KiB
Python

from mozilla_django_oidc.auth import OIDCAuthenticationBackend
class KeycloakOIDCBackend(OIDCAuthenticationBackend):
def create_user(self, claims):
email = claims.get("email", "")
user = self.UserModel.objects.create_user(
email=email,
full_name=claims.get("name", ""),
keycloak_id=claims.get("sub", ""),
role=claims.get("role", "buyer"),
is_staff=True,
)
return user
def update_user(self, user, claims):
user.email = claims.get("email", user.email)
user.full_name = claims.get("name", user.full_name)
user.is_staff = True
role = claims.get("role", user.role)
if role in dict(self.UserModel.Roles.choices):
user.role = role
user.save()
return user
def filter_users_by_claims(self, claims):
email = claims.get("email")
if not email:
return self.UserModel.objects.none()
return self.UserModel.objects.filter(email__iexact=email)