24 lines
1.0 KiB
Python
24 lines
1.0 KiB
Python
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
|