/
MyxaXYZ
/
TestBackend
Обзор
Документация
Войти
/
MyxaXYZ
/
TestBackend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
userauth/views.py
101 строка
3 KB
Maxim Sidorenko
first_commit
23 мар 2025, 17:10
23 мар 2025, 17:10
171cccc
Код
Авторство
О чём код?
from .serializer import UserRegistrationSerializer from rest_framework.decorators import api_view, permission_classes from rest_framework.response import Response from rest_framework.permissions import IsAuthenticated, AllowAny from rest_framework_simplejwt.views import ( TokenObtainPairView, TokenRefreshView, ) class CustomTokenObtainPairView(TokenObtainPairView): def post(self, request, *args, **kwargs): try: response = super().post(request, *args, **kwargs) tokens = response.data access_token = tokens['access'] refresh_token = tokens['refresh'] res = Response() res.data = {'success': True} res.set_cookie( key = 'access_token', value = access_token, httponly = True, secure = True, samesite = None, path = '/' ) res.set_cookie( key = 'refresh_token', value = refresh_token, httponly = True, secure = True, samesite = None, path = '/' ) return res except: return Response({'success': False}) class CustomTokenRefreshView(TokenRefreshView): def post(self, request, *args, **kwargs): try: refresh_token = request.COOKIES.get('refresh_token') request.data['refresh'] = refresh_token response = super().post(request, *args, **kwargs) tokens = response.data access_token = tokens['access'] res = Response() res.data = {'refreshed': True} res.set_cookie( key='access_token', value=access_token, httponly=True, secure=False, samesite='None', path='/' ) return res except: return Response({'refreshed': False}) @api_view(['POST']) def logout(request): try: res = Response() res.data = {"success": True} res.delete_cookie('access_token', path='/', samesite=None) res.delete_cookie('refresh_token', path='/', samesite=None) return res except: return Response({'success': False}) @api_view(['POST']) @permission_classes([IsAuthenticated]) def is_authenticated(request): return Response({'authenticated': True}) @api_view(['POST']) @permission_classes([AllowAny]) def register(request): serializer = UserRegistrationSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.error)