Commit ca5637af authored by Ilham Maulana's avatar Ilham Maulana 💻

fix: simple jwt logout and permissions

parent dbee2adc
from rest_framework.permissions import IsAuthenticated
from rest_framework_simplejwt.tokens import RefreshToken
from rest_framework_simplejwt.tokens import AccessToken
class IsStaffUser(IsAuthenticated):
......
......@@ -101,6 +101,15 @@ class MemberSerializer(serializers.ModelSerializer):
def create(self, validated_data):
user_data = validated_data.pop("user")
user_data["is_staff"] = False
username = user_data.get("username")
email = user_data.get("email")
is_username = User.objects.filter(username=username)
is_email = User.objects.filter(email=email)
if is_username.exists() and is_email.exists():
raise serializers.ValidationError("Username or Email is already exists")
user = User.objects.create_user(**user_data)
user.set_password(user_data.get("password"))
user.save()
......
......@@ -118,18 +118,27 @@ class LibrarianLoginView(LoginBaseView):
return response
class LibrarianRegisterView(views.APIView):
class RegisterBaseView(views.APIView):
serializer_class = None
def post(self, request):
data = request.data
data["message"] = "Register as librarian success"
serializer = LibrarianSerializer(data=data)
serializer = self.serializer_class(data=data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
class LibrarianRegisterView(RegisterBaseView):
serializer_class = LibrarianSerializer
class MemberRegisterView(RegisterBaseView):
serializer_class = MemberSerializer
class MemberLoginView(LoginBaseView):
def post(self, request, *args, **kwargs):
......
......@@ -8,6 +8,7 @@ from .auth.views import (
LibrarianLoginHistoryViewSet,
MemberViewSet,
MemberLoginView,
MemberRegisterView,
MemberChangePasswordView,
LogoutView,
TokenResetPasswordView,
......@@ -62,6 +63,12 @@ urlpatterns = [
),
path("auth/logout", LogoutView.as_view(), name="librarian_logout"),
path("members/auth/login", MemberLoginView.as_view(), name="member_login"),
path(
"members/auth/register",
MemberRegisterView.as_view(),
name="librarian_register",
),
# change password
path(
"members/<int:member_id>/change-password",
MemberChangePasswordView.as_view(),
......
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