gault-millau/apps/utils/permissions.py
2019-09-03 16:48:06 +03:00

23 lines
824 B
Python

"""Project custom permissions"""
from rest_framework.permissions import BasePermission
from rest_framework_simplejwt.tokens import AccessToken
class IsAuthenticatedAndTokenIsValid(BasePermission):
"""
Check if user has a valid token and authenticated
"""
def has_permission(self, request, view):
"""Check permissions by access token and default REST permission IsAuthenticated"""
user = request.user
access_token = request.COOKIES.get('access_token')
if user.is_authenticated and access_token:
access_token = AccessToken(access_token)
valid_tokens = user.access_tokens.valid()\
.by_jti(jti=access_token.payload.get('jti'))
return valid_tokens.exists()
else:
return False