diff --git a/apps/users/views.py b/apps/users/views.py index dd6ce1b..7d99456 100644 --- a/apps/users/views.py +++ b/apps/users/views.py @@ -3,11 +3,11 @@ from django.contrib.auth.decorators import login_required from django.contrib.auth.views import LoginView from django.shortcuts import render from django.utils import timezone -from oauth2_provider.contrib.rest_framework import IsAuthenticatedOrTokenHasScope, OAuth2Authentication, \ - TokenMatchesOASRequirements -from rest_framework import generics, permissions, status +from oauth2_provider.contrib.rest_framework import IsAuthenticatedOrTokenHasScope +from rest_framework import generics, status from rest_framework.response import Response +from apps.gooyal_oauth2.rest_framework import IsAuthenticatedOrTokenMatchesOASRequirements from apps.users.forms import OTPAuthenticationForm from apps.users.models import User from apps.users.serializers import PublicUserSerializer, AccountSerializer, RequestOTPSerializer, \ @@ -17,7 +17,7 @@ UserModel = get_user_model() class UserListView(generics.ListAPIView): - permission_classes = [permissions.IsAuthenticated, TokenMatchesOASRequirements] + permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements] queryset = User.objects.all() serializer_class = PublicUserSerializer required_alternate_scopes = { @@ -26,7 +26,7 @@ class UserListView(generics.ListAPIView): class UserDetailView(generics.RetrieveAPIView): - permission_classes = [permissions.IsAuthenticated, TokenMatchesOASRequirements] + permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements] queryset = User.objects.all() serializer_class = PublicUserSerializer lookup_field = 'uuid' @@ -37,12 +37,13 @@ class UserDetailView(generics.RetrieveAPIView): class AccountView(generics.RetrieveUpdateAPIView): serializer_class = AccountSerializer - permission_classes = [TokenMatchesOASRequirements] + permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements] required_alternate_scopes = { "GET": [["accounts.account:retrieve"]], "POST": [["accounts.account:update"]], "PUT": [["accounts.account:update"]], - } + "PATCH": [["accounts.account:update"]], + } def get_object(self): return self.request.user @@ -58,7 +59,7 @@ class RequestOTPView(generics.CreateAPIView): class ChangePasswordView(generics.UpdateAPIView): - permission_classes = [permissions.IsAuthenticated, IsAuthenticatedOrTokenHasScope] + permission_classes = [IsAuthenticatedOrTokenHasScope] serializer_class = ChangePasswordSerializer required_scopes = ["accounts.account:change_password"] model = User