add user update password api
This commit is contained in:
@@ -80,4 +80,18 @@ class UserListSerializer(serializers.ModelSerializer):
|
||||
'id': obj.role.id,
|
||||
'role': obj.role.name,
|
||||
}
|
||||
return None
|
||||
return None
|
||||
|
||||
|
||||
class UserUpdatePasswordSerializer(serializers.Serializer):
|
||||
current_password = serializers.CharField()
|
||||
new_password = serializers.CharField()
|
||||
confirm_new_password = serializers.CharField()
|
||||
|
||||
def validate(self, data):
|
||||
user = self.context.get('user')
|
||||
if not user.check_password(data['current_password']):
|
||||
raise serializers.ValidationError("Password incorrect")
|
||||
if data['new_password'] != data['confirm_new_password']:
|
||||
raise serializers.ValidationError("Ikkita parol bir xil bolishi kerak")
|
||||
return data
|
||||
@@ -21,6 +21,7 @@ urlpatterns = [
|
||||
path('list/', user_views.UserListApiView.as_view()),
|
||||
path('<uuid:id>/', user_views.UserUpdateApiView.as_view()),
|
||||
path('permissions/', user_views.UserPermissionListApiView.as_view()),
|
||||
path('update_password/', user_views.UpdateUserPasswordApiView.as_view()),
|
||||
]
|
||||
)),
|
||||
path('role/', include(
|
||||
|
||||
@@ -109,4 +109,24 @@ class UserPermissionListApiView(generics.GenericAPIView):
|
||||
return Response(
|
||||
{'success': True, 'permissions': serializer.data},
|
||||
status=200
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class UpdateUserPasswordApiView(generics.GenericAPIView):
|
||||
serializer_class = serializers.UserUpdatePasswordSerializer
|
||||
queryset = User.objects.all()
|
||||
permission_classes = [HasRolePermission]
|
||||
|
||||
def patch(self, request):
|
||||
user = request.user
|
||||
serializer = self.serializer_class(data=request.data, context={'user': user})
|
||||
if serializer.is_valid():
|
||||
new_password = serializer.validated_data.get('new_password')
|
||||
user.set_password(new_password)
|
||||
user.save()
|
||||
return Response({
|
||||
'success': True, 'message': 'Foydalanuvchi paroli ozgartirildi',
|
||||
}, status=200)
|
||||
return Response({
|
||||
'success': False, 'error': serializer.errors
|
||||
}, status=400)
|
||||
Reference in New Issue
Block a user