kuzyaross
04/27/2022, 11:10 AMAttributeError: 'Request' object has no attribute 'supertokens'
I am just using request.supertokens
in my Django views as shown in the docs.
Has anyone experienced this?rp_st
04/27/2022, 11:20 AMrp_st
04/27/2022, 11:21 AMkuzyaross
04/27/2022, 11:26 AMrp_st
04/27/2022, 11:32 AMkuzyaross
04/27/2022, 11:37 AMdef create(self, request, *args, **kwargs):
session: SessionContainer = request.supertokens
....
kuzyaross
04/27/2022, 11:39 AMverify_session
is used as
@method_decorator(verify_session(), name='dispatch')
class SomeViewSet(CreateModelMixin, ReadOnlyModelViewSet):
rp_st
04/27/2022, 11:46 AMkuzyaross
04/27/2022, 11:47 AMrp_st
04/27/2022, 11:56 AMkuzyaross
04/27/2022, 12:03 PMrp_st
04/27/2022, 12:03 PMrp_st
04/27/2022, 12:06 PMsattvikc
04/27/2022, 12:06 PMexecreate
04/27/2022, 12:55 PMsattvikc
04/27/2022, 12:57 PMexecreate
04/27/2022, 1:17 PMsattvikc
04/27/2022, 1:24 PMsattvikc
04/27/2022, 1:25 PMexecreate
04/27/2022, 1:25 PMfrom supertokens_python.recipe.session.framework.django.syncio import verify_session
sattvikc
04/27/2022, 1:26 PMsattvikc
04/27/2022, 1:38 PMfrom django.http import JsonResponse
from django.shortcuts import render
from django.utils.decorators import method_decorator
from rest_framework.mixins import CreateModelMixin, ListModelMixin
from rest_framework.viewsets import ReadOnlyModelViewSet
from rest_framework import serializers
from rest_framework import permissions
from supertokens_python.recipe.session.framework.django.syncio import verify_session
from .models import *
class MyModelListPermission(permissions.BasePermission):
def has_permission(self, request, view):
session = request.supertokens # the error is happening here
print(session)
# current_access_token_payload = session.get_access_token_payload()
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
@method_decorator(verify_session(), name='dispatch')
class SomeViewSet(CreateModelMixin, ReadOnlyModelViewSet, ListModelMixin):
queryset = MyModel.objects.all()
serializer_class = MyModelSerializer
def list(self, request, *args, **kwargs):
print(request.supertokens)
return JsonResponse({})
def get_permissions(self):
self.permission_classes = [MyModelListPermission]
return super().get_permissions()
sattvikc
04/27/2022, 1:38 PMexecreate
04/27/2022, 1:39 PMsattvikc
04/27/2022, 1:40 PMexecreate
04/27/2022, 1:41 PMINSTALLED_APPS = [
'corsheaders',
'supertokens_python',
'grappelli',
'admin_auto_filters',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'drf_spectacular',
'django_filters',
...
]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.locale.LocaleMiddleware',
'supertokens_python.framework.django.django_middleware.middleware'
]
execreate
04/27/2022, 1:43 PMdrf_spectacular
which is causing the error 🤔execreate
04/27/2022, 1:43 PMsattvikc
04/27/2022, 1:44 PMsattvikc
04/27/2022, 1:48 PMexecreate
04/27/2022, 1:48 PMdrf_spectacular
. It has a mechanism to hide the endpoints that are not permitted for the current user, so it tries to call the permission classes. The issue must be that a direct permissions call uses just an empty request which does not go through the verify_session wrapperexecreate
04/27/2022, 1:49 PMdrf_spectacular
, I just added superuser check to permission classes:
python
def has_permission(self, request, view):
if hasattr(request, 'user') and request.user is not None and request.user.is_superuser:
return True
and it works just finesattvikc
04/27/2022, 1:49 PMexecreate
04/27/2022, 1:50 PMsattvikc
04/27/2022, 1:50 PMexecreate
04/27/2022, 1:50 PMrp_st
04/27/2022, 1:50 PMsattvikc
04/27/2022, 1:50 PMexecreate
04/27/2022, 1:51 PMsattvikc
04/27/2022, 1:52 PMexecreate
04/27/2022, 1:52 PM