Спасибо!
Ваш заказ успешно оформлен. Номер вашего заказа: {{ order.id }}.
diff --git a/orders/views.py b/orders/views.py
index ead5941..e9e3b7e 100644
--- a/orders/views.py
+++ b/orders/views.py
@@ -32,4 +32,3 @@ def order_created(request, order_id):
-
diff --git a/users/__pycache__/keycloack_acces_token.cpython-311.pyc b/users/__pycache__/keycloack_acces_token.cpython-311.pyc
new file mode 100644
index 0000000..6c0c55f
Binary files /dev/null and b/users/__pycache__/keycloack_acces_token.cpython-311.pyc differ
diff --git a/users/__pycache__/urls.cpython-311.pyc b/users/__pycache__/urls.cpython-311.pyc
index e6a7c7b..4352eea 100644
Binary files a/users/__pycache__/urls.cpython-311.pyc and b/users/__pycache__/urls.cpython-311.pyc differ
diff --git a/users/__pycache__/views.cpython-311.pyc b/users/__pycache__/views.cpython-311.pyc
index caca517..a469811 100644
Binary files a/users/__pycache__/views.cpython-311.pyc and b/users/__pycache__/views.cpython-311.pyc differ
diff --git a/users/keycloack_acces_token.py b/users/keycloack_acces_token.py
new file mode 100644
index 0000000..4cb2437
--- /dev/null
+++ b/users/keycloack_acces_token.py
@@ -0,0 +1,86 @@
+import requests
+from djangoProject1 import settings
+
+
+#Получение access_token
+def get_access_token():
+
+ keycloack_server = settings.KEYCLOAK_CONFIG['SERVER_URL']
+ realm = settings.KEYCLOAK_CONFIG['REALM']
+ url = f'{keycloack_server}/realms/{realm}/protocol/openid-connect/token'
+ client_id = 'lowlight'
+ client_secret = settings.KEYCLOAK_CONFIG['CLIENT_SECRET']
+ username = 'lowlight'
+ password = ''
+ payload = {
+ 'grant_type':'password',
+ 'client_id':client_id,
+ 'client_secret':client_secret,
+ 'username':username,
+ 'password':password,
+ }
+ headers = {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ }
+ response = requests.post(url,data=payload,headers=headers)
+ if response.ok:
+ data = response.json()
+ print('Acces Token:' ,data['access_token'])
+ print('Refresh Token:', data['refresh_token'])
+ return data['access_token']
+ else:
+ print('Error :',response.text)
+
+
+def refresh_token():
+ keycloack_server = settings.KEYCLOAK_CONFIG['SERVER_URL']
+ realm = settings.KEYCLOAK_CONFIG['REALM']
+ url = f'{keycloack_server}/realms/{realm}/protocol/openid-connect/token'
+ client_id = 'lowlight'
+ refresh_token = 'eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIyMjRmYTgzYy00ZmMzLTQyMTgtYTEyMS00ZTQxZTdiYTVhNzcifQ.eyJleHAiOjE3MDg5NjYxOTcsImlhdCI6MTcwODk2NDM5NywianRpIjoiYWE5N2IwOTMtZjIxMS00N2VhLWFmNGItNjc5OTJiOTdkOGI5IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLm15dGVyaW9yLmt6L3JlYWxtcy9IYXJtb255IiwiYXVkIjoiaHR0cHM6Ly9hdXRoLm15dGVyaW9yLmt6L3JlYWxtcy9IYXJtb255Iiwic3ViIjoiOWE3ZDNiNmUtZTExZi00OGQzLThmYzctMWMyOTZmZWE5MjYyIiwidHlwIjoiUmVmcmVzaCIsImF6cCI6Imxvd2xpZ2h0Iiwic2Vzc2lvbl9zdGF0ZSI6IjExNTJmYTkwLTM0ZmUtNGU1OS1iOTYyLTY5NDA0OWRiMGU2YiIsInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsInNpZCI6IjExNTJmYTkwLTM0ZmUtNGU1OS1iOTYyLTY5NDA0OWRiMGU2YiJ9.-NifrZ0Y-d9-D5l6bxOn6RoTvqm9Ekvp9sTwP4oQoRw'
+ client_secret = settings.KEYCLOAK_CONFIG['CLIENT_SECRET']
+ payload = {
+ 'client_id': client_id,
+ 'grant_type': 'refresh_token',
+ 'refresh_token': refresh_token,
+ 'client_secret': client_secret,
+ }
+
+ headers = {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ }
+ response = requests.post(url, data=payload, headers=headers)
+ if response.ok:
+ data = response.json()
+ print('Access Token:', data.get('access_token'))
+ print('Refresh Token:', data.get('refresh_token'))
+ print('Data:', data)
+ else:
+ print('Error:', response.text)
+
+def get_refresh_token():
+
+ keycloack_server = settings.KEYCLOAK_CONFIG['SERVER_URL']
+ realm = settings.KEYCLOAK_CONFIG['REALM']
+ url = f'{keycloack_server}/realms/{realm}/protocol/openid-connect/token'
+ client_id = 'lowlight'
+ client_secret = settings.KEYCLOAK_CONFIG['CLIENT_SECRET']
+ username = 'lowlight'
+ password = ''
+ payload = {
+ 'grant_type': 'password',
+ 'client_id': client_id,
+ 'client_secret': client_secret,
+ 'username': username,
+ 'password': password,
+ }
+ headers = {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ }
+ response = requests.get(url,data=payload,headers = headers)
+ if response.ok:
+ data = response.json()
+ return ('Refresh Token',data.get('refresh_token'))
+ else:
+ print('Error :',response.text)
+
diff --git a/users/urls.py b/users/urls.py
index d9eb864..bdc6a49 100644
--- a/users/urls.py
+++ b/users/urls.py
@@ -1,10 +1,9 @@
-from django.urls import path
-from .views import keycloak_login, keycloak_callback, keycloak_logout
-from .views import profile
-urlpatterns = [
- path('login/', keycloak_login, name='keycloak_login'),
- path('callback/', keycloak_callback, name='keycloak_callback'),
- path('logout/', keycloak_logout, name='keycloak_logout'),
-path('profile/', profile, name='profile'),
+# urls.py
+from django.urls import path
+from . import views
+
+urlpatterns = [
+ path('test/', views.test_payment, name='test-payment'),
+ path('login/', views.keycloak_login, name='keycloak_login'),
]
diff --git a/users/views.py b/users/views.py
index e88442c..9956937 100644
--- a/users/views.py
+++ b/users/views.py
@@ -1,89 +1,28 @@
-from django.shortcuts import redirect,render
+# views.py
+from django.shortcuts import redirect
+from django.urls import reverse
+from keycloak import KeycloakOpenID
from django.http import HttpResponse
-from keycloak import KeycloakOpenID, KeycloakGetError
-from django.conf import settings
-import logging
+from django.contrib.auth.decorators import login_required
+
+from djangoProject1 import settings
+
+
+@login_required
+def test_payment(request):
+ # Assuming the user's username is what you want to return
+ return HttpResponse(request.user.username)
+# Inside your_app/views.py
+
-# Настройка логгера для текущего модуля
-logger = logging.getLogger(__name__)
-# Функция для начала процесса аутентификации с Keycloak
def keycloak_login(request):
- try:
- 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']
- )
- auth_url = keycloak_openid.auth_url(redirect_uri=settings.KEYCLOAK_CONFIG['CALLBACK_URL'])
- logger.info("Redirecting to Keycloak for authentication.")
- return redirect(auth_url)
- except Exception as e:
- logger.error(f"Error during Keycloak login: {e}")
- return HttpResponse("Ошибка при попытке аутентификации через Keycloak.")
+ 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']
+ )
+ auth_url = keycloak_openid.auth_url(redirect_uri=settings.KEYCLOAK_CONFIG['CALLBACK_URL'])
-# Функция обратного вызова для обработки ответа от Keycloak
-def keycloak_callback(request):
- code = request.GET.get('code')
- if code:
- try:
- 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']
- )
-
- token = keycloak_openid.token(
- grant_type=['authorization_code'],
- code=code,
- redirect_uri=settings.KEYCLOAK_CONFIG['CALLBACK_URL']
- )
-
- userinfo = keycloak_openid.userinfo(token['access_token'])
- logger.info(f"User authenticated with Keycloak: {userinfo}")
-
- request.session['keycloak_user_id'] = userinfo['sub']
- request.session['username'] = userinfo.get('preferred_username', 'Guest')
-
- return redirect('http://127.0.0.1:8000/products/')
- except KeycloakGetError as e:
- logger.error(f"Keycloak authentication error: {e}")
- return HttpResponse("Ошибка аутентификации.")
- except Exception as e:
- logger.error(f"Unexpected error during Keycloak callback: {e}")
- return HttpResponse("Неожиданная ошибка.")
- else:
- logger.warning("Authentication code not provided.")
- return HttpResponse("Код аутентификации не предоставлен.")
-
-# Функция для выхода из системы
-def keycloak_logout(request):
- try:
- request.session.flush()
- logger.info("User logged out.")
- return redirect('http://127.0.0.1:8000/')
- except Exception as e:
- logger.error(f"Error during logout: {e}")
- return HttpResponse("Ошибка при выходе из системы.")
-
-
-
-
-
-def profile(request):
- # Проверяем, аутентифицирован ли пользователь
- if 'keycloak_user_id' in request.session:
- # Извлекаем данные пользователя из сессии
- user_id = request.session['keycloak_user_id']
- username = request.session.get('username', 'Гость')
- logger.info(f"Keycloak user ID: {request.session['keycloak_user_id']}, Username: {request.session['username']},{username}")
-
-
-
- # Отображаем шаблон, передавая в него данные пользователя
- return render(request, 'main/product/profile.html', {'username': username})
- else:
- # Если пользователь не аутентифицирован, перенаправляем на страницу входа
- return redirect('keycloak_login')
+ return redirect(auth_url)
\ No newline at end of file