Harmony/users/views.py

47 lines
2.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import logging
from django.http import HttpResponse
from django.views.decorators.http import require_http_methods
from django.shortcuts import redirect
from django.conf import settings
from keycloak import KeycloakOpenID
logger = logging.getLogger(__name__)
def keycloak_login(request):
# Инициализация клиента Keycloak с конфигурационными данными из настроек Django.
keycloak_openid = KeycloakOpenID(
server_url=settings.KEYCLOAK_CONFIG['SERVER_URL'],
client_id=settings.KEYCLOAK_CONFIG['CLIENT_ID'],
realm_name=settings.KEYCLOAK_CONFIG['REALM'],
client_secret_key=settings.KEYCLOAK_CONFIG['CLIENT_SECRET']
)
# Установка URL для перенаправления пользователя после аутентификации в Keycloak.
redirect_uri = settings.KEYCLOAK_CONFIG['CALLBACK_URL']
# Получение URL для аутентификации пользователя через Keycloak.
auth_url = keycloak_openid.auth_url(redirect_uri=redirect_uri)
# Логгирование успешной обработки запроса.
logger.info('Запрос успешно обработан')
# Перенаправление пользователя на страницу аутентификации Keycloak.
return redirect(auth_url)
@require_http_methods(["GET"])
def keycloak_redirect(request):
# Извлечение кода авторизации из параметров запроса.
authorization_code = request.GET.get('code')
if authorization_code:
# Если код авторизации получен, продолжается процесс обмена токенами.
print(authorization_code)
logger.info(' 2 Запрос успешно обработан')
return HttpResponse("Authorization code received.")
else:
# Если код авторизации отсутствует, возвращается ошибка.
return HttpResponse("Authorization code not found.", status=400)