Harmony/users/keycloak_backend.py

24 lines
1.0 KiB
Python
Raw Normal View History

2024-03-19 11:07:56 +00:00
from django.contrib.auth.backends import BaseBackend
from django.contrib.auth.models import User
from main.views import decode_access_token
class KeycloakBackend(BaseBackend):
def authenticate(self, request, token=None):
# Ваш код для проверки токена через Keycloak и извлечения информации о пользователе
user_info = decode_access_token(token)
if user_info:
user, created = User.objects.get_or_create(username=user_info['preferred_username'],
defaults={'first_name': user_info.get('given_name', ''),
'last_name': user_info.get('family_name', ''),
'email': user_info.get('email', '')})
return user
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None