add user update password api
This commit is contained in:
@@ -81,3 +81,17 @@ class UserListSerializer(serializers.ModelSerializer):
|
|||||||
'role': obj.role.name,
|
'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('list/', user_views.UserListApiView.as_view()),
|
||||||
path('<uuid:id>/', user_views.UserUpdateApiView.as_view()),
|
path('<uuid:id>/', user_views.UserUpdateApiView.as_view()),
|
||||||
path('permissions/', user_views.UserPermissionListApiView.as_view()),
|
path('permissions/', user_views.UserPermissionListApiView.as_view()),
|
||||||
|
path('update_password/', user_views.UpdateUserPasswordApiView.as_view()),
|
||||||
]
|
]
|
||||||
)),
|
)),
|
||||||
path('role/', include(
|
path('role/', include(
|
||||||
|
|||||||
@@ -110,3 +110,23 @@ class UserPermissionListApiView(generics.GenericAPIView):
|
|||||||
{'success': True, 'permissions': serializer.data},
|
{'success': True, 'permissions': serializer.data},
|
||||||
status=200
|
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