account update scope

This commit is contained in:
Sayyid Hamid Mahdavi 2020-10-11 12:19:15 +03:30
parent 496dbc481d
commit 506b30096e
2 changed files with 22 additions and 23 deletions

View file

@ -37,11 +37,11 @@ class UserDetailView(generics.RetrieveAPIView):
class AccountView(generics.RetrieveUpdateAPIView):
serializer_class = AccountSerializer
authentication_classes = [OAuth2Authentication]
permission_classes = [TokenMatchesOASRequirements]
required_alternate_scopes = {
"GET": [["accounts.account:retrieve"]],
"POST": [["accounts.account:update"]],
"PUT": [["accounts.account:update"]],
}
def get_object(self):
@ -58,32 +58,32 @@ class RequestOTPView(generics.CreateAPIView):
class ChangePasswordView(generics.UpdateAPIView):
permission_classes = [permissions.IsAuthenticated, IsAuthenticatedOrTokenHasScope]
serializer_class = ChangePasswordSerializer
required_scopes = ["accounts.account:change_password"]
model = User
permission_classes = [permissions.IsAuthenticated, IsAuthenticatedOrTokenHasScope]
serializer_class = ChangePasswordSerializer
required_scopes = ["accounts.account:change_password"]
model = User
def get_object(self, queryset=None):
obj = self.request.user
return obj
def get_object(self, queryset=None):
obj = self.request.user
return obj
def update(self, request, *args, **kwargs):
self.object = self.get_object()
serializer = self.get_serializer(data=request.data)
def update(self, request, *args, **kwargs):
self.object = self.get_object()
serializer = self.get_serializer(data=request.data)
if serializer.is_valid():
pass_field = serializer.data.get("old_password_field")
old_password = serializer.data.get("old_password")
new_password = serializer.data.get("new_password")
if not self.object.check_auth(pass_field, old_password):
return Response({"old_password": ["Wrong password/otp."]}, status=status.HTTP_400_BAD_REQUEST)
if serializer.is_valid():
pass_field = serializer.data.get("old_password_field")
old_password = serializer.data.get("old_password")
new_password = serializer.data.get("new_password")
if not self.object.check_auth(pass_field, old_password):
return Response({"old_password": ["Wrong password/otp."]}, status=status.HTTP_400_BAD_REQUEST)
self.object.set_password(new_password)
self.object.last_update = timezone.now()
self.object.save()
return Response({"state": 'success'}, status=status.HTTP_200_OK)
self.object.set_password(new_password)
self.object.last_update = timezone.now()
self.object.save()
return Response({"state": 'success'}, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@login_required

View file

@ -107,7 +107,6 @@ TEMPLATES = [
]
AUTHENTICATION_BACKENDS = (
# TODO: where use this?
'apps.users.backends.OTPBackend',
'django.contrib.auth.backends.ModelBackend',
)