Now change password directly need the current password

remotes/origin/enhancement/email-actions
Jesús Espino 2014-07-30 15:42:34 +02:00
parent 64a517a83a
commit e163282351
1 changed files with 10 additions and 2 deletions

View File

@ -20,8 +20,10 @@ from django.db.models.loading import get_model
from django.db.models import Q from django.db.models import Q
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from django.contrib.auth import logout, login, authenticate from django.contrib.auth import logout, login, authenticate
from django.contrib.auth.hashers import make_password
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.filters import BaseFilterBackend from rest_framework.filters import BaseFilterBackend
from rest_framework.permissions import IsAuthenticated, AllowAny from rest_framework.permissions import IsAuthenticated, AllowAny
@ -142,13 +144,19 @@ class UsersViewSet(ModelCrudViewSet):
""" """
self.check_permissions(request, "change_password", None) self.check_permissions(request, "change_password", None)
current_password = request.DATA.get("current_password")
password = request.DATA.get("password") password = request.DATA.get("password")
if not current_password:
raise exc.WrongArguments(_("Current password parameter needed"))
if not password: if not password:
raise exc.WrongArguments(_("Incomplete arguments")) raise exc.WrongArguments(_("New password parameter needed"))
if len(password) < 6: if len(password) < 6:
raise exc.WrongArguments(_("Invalid password length")) raise exc.WrongArguments(_("Invalid password length at least 6 charaters needed"))
if not request.user.check_password(current_password):
raise exc.WrongArguments(_("Invalid current password"))
request.user.set_password(password) request.user.set_password(password)
request.user.save(update_fields=["password"]) request.user.save(update_fields=["password"])