Commit 8efffb91 authored by Ilham Maulana's avatar Ilham Maulana 💻

feat: member change password API

parent c221c203
...@@ -7,6 +7,7 @@ class UserSerializer(serializers.ModelSerializer): ...@@ -7,6 +7,7 @@ class UserSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = User model = User
fields = [ fields = [
"id",
"username", "username",
"email", "email",
"password", "password",
......
...@@ -206,3 +206,22 @@ class MemberLogoutView(LogoutBasedView): ...@@ -206,3 +206,22 @@ class MemberLogoutView(LogoutBasedView):
) )
return response return response
class MemberChangePasswordView(views.APIView):
permission_classes = [IsNotStaffUser]
def post(self, request, member_id):
new_password = request.data.get("new_password")
old_password = request.data.get("old_password")
member = Member.objects.get(pk=member_id)
user = member.user
if user.check_password(old_password):
user.set_password(new_password)
user.save()
return Response(
{"message": "Pasword succesfuly changed"}, status=status.HTTP_200_OK
)
return Response({"message": "Change password failed, old password is invalid."})
...@@ -9,6 +9,7 @@ from .auth.views import ( ...@@ -9,6 +9,7 @@ from .auth.views import (
MemberViewSet, MemberViewSet,
MemberLoginView, MemberLoginView,
MemberLogoutView, MemberLogoutView,
MemberChangePasswordView,
) )
from .book.views import BookViewSet, CategoryViewSet from .book.views import BookViewSet, CategoryViewSet
from .loans.views import ( from .loans.views import (
...@@ -46,7 +47,12 @@ urlpatterns = [ ...@@ -46,7 +47,12 @@ urlpatterns = [
"librarians/auth/logout", LibrarianLogoutView.as_view(), name="librarian_logout" "librarians/auth/logout", LibrarianLogoutView.as_view(), name="librarian_logout"
), ),
path("members/auth/login", MemberLoginView.as_view(), name="member_login"), path("members/auth/login", MemberLoginView.as_view(), name="member_login"),
path("members/auth/logout", MemberLogoutView.as_view(), name="member_logout"), path("members/auth/logout/", MemberLogoutView.as_view(), name="member_logout"),
path(
"members/<int:member_id>/change-password",
MemberChangePasswordView.as_view(),
name="member_change_password",
),
path( path(
"members/<int:member_id>/", "members/<int:member_id>/",
include(router_member_loan.urls), include(router_member_loan.urls),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment