feat: token validation for user_token

This commit is contained in:
Ahmet Kaan GÜMÜŞ 2024-07-04 20:49:00 +03:00
parent f9683d202f
commit 8232355ff3
6 changed files with 15 additions and 14 deletions

1
.gitignore vendored
View file

@ -125,6 +125,7 @@ celerybeat.pid
# Environments # Environments
.env .env
.venv .venv
.ruff_cache/
env/ env/
venv/ venv/
ENV/ ENV/

View file

@ -1,11 +1,11 @@
from rest_framework import permissions from rest_framework import permissions
from user_token.views import TokenValidation from user_token import validations
class IsOwnerOrIsAdminOrHasToken(permissions.BasePermission): class IsOwnerOrIsAdminOrHasToken(permissions.BasePermission):
def has_permission(self, request, view): def has_permission(self, request, view):
token = request.META.get("HTTP_DETECTIVE_TOKEN") token = request.META.get("HTTP_DETECTIVE_TOKEN")
is_token_valid = bool(TokenValidation.check_token(token)) is_token_valid = validations.TokenValidation.check_token(token)
return ( return (
is_token_valid | request.user.is_superuser | request.user.is_authenticated is_token_valid | request.user.is_superuser | request.user.is_authenticated
) )

View file

@ -1,7 +1,7 @@
from rest_framework.viewsets import ModelViewSet from rest_framework.viewsets import ModelViewSet
# from rest_framework.permissions import IsAuthenticatedOrReadOnly # from rest_framework.permissions import IsAuthenticatedOrReadOnly
from tJango import permissions from tJango import permissions as tJango_permissions
from .models import User from .models import User
from .serializers import UserSerializer from .serializers import UserSerializer
@ -9,4 +9,4 @@ from .serializers import UserSerializer
class UserViewSet(ModelViewSet): class UserViewSet(ModelViewSet):
queryset = User.objects.all() queryset = User.objects.all()
serializer_class = UserSerializer serializer_class = UserSerializer
permission_classes = [permissions.IsOwnerOrIsAdminOrHasToken] permission_classes = [tJango_permissions.IsOwnerOrIsAdminOrHasToken]

View file

@ -3,7 +3,7 @@ from rest_framework.routers import DefaultRouter
from user_token import views as user_token_views from user_token import views as user_token_views
router = DefaultRouter() router = DefaultRouter()
router.register(r"", user_token_views.UserViewSet) router.register(r"", user_token_views.UserTokenViewSet)
urlpatterns = [ urlpatterns = [
path("", include(router.urls)), path("", include(router.urls)),

View file

@ -0,0 +1,6 @@
from user_token import models
class TokenValidation:
def check_token(value):
return bool(models.UserToken.objects.filter(token=value))

View file

@ -1,16 +1,10 @@
from rest_framework.viewsets import ReadOnlyModelViewSet from rest_framework.viewsets import ReadOnlyModelViewSet
from tJango import permissions as tJango_permissions
# from rest_framework.permissions import IsAuthenticatedOrReadOnly
from .models import UserToken from .models import UserToken
from .serializers import UserTokenSerializer from .serializers import UserTokenSerializer
class UserViewSet(ReadOnlyModelViewSet): class UserTokenViewSet(ReadOnlyModelViewSet):
queryset = UserToken.objects.all() queryset = UserToken.objects.all()
serializer_class = UserTokenSerializer serializer_class = UserTokenSerializer
# permission_classes = [IsAuthenticatedOrReadOnly] permission_classes = [tJango_permissions.IsOwnerOrIsAdminOrHasToken]
class TokenValidation:
def check_token(value):
return UserToken.objects.filter(token=value)