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
|