Commit 0ea18f2d authored by Ilham Maulana's avatar Ilham Maulana 💻

fix: auth permission and user detail payload

parent b354e02b
...@@ -18,7 +18,7 @@ class IsStaffUser(IsAuthenticated): ...@@ -18,7 +18,7 @@ class IsStaffUser(IsAuthenticated):
return bool( return bool(
header is not None header is not None
and verified_token.exists() and verified_token is not None
and verified_token.user.is_staff and verified_token.user.is_staff
) )
......
...@@ -93,6 +93,13 @@ class UserDetailView(views.APIView): ...@@ -93,6 +93,13 @@ class UserDetailView(views.APIView):
user_id = verified_token[0].user.id user_id = verified_token[0].user.id
user = User.objects.get(pk=user_id) user = User.objects.get(pk=user_id)
account_id = None
if user.is_staff:
account_id = user.librarian.id
else:
account_id = user.member.id
data = { data = {
"id": user.pk, "id": user.pk,
"username": user.username, "username": user.username,
...@@ -100,6 +107,7 @@ class UserDetailView(views.APIView): ...@@ -100,6 +107,7 @@ class UserDetailView(views.APIView):
"first_name": user.first_name, "first_name": user.first_name,
"last_name": user.last_name, "last_name": user.last_name,
"is_staff": user.is_staff, "is_staff": user.is_staff,
"account_id": account_id,
} }
return Response(data, status=status.HTTP_200_OK) return Response(data, status=status.HTTP_200_OK)
......
...@@ -13,7 +13,7 @@ class BookLoanSerializer(serializers.ModelSerializer): ...@@ -13,7 +13,7 @@ class BookLoanSerializer(serializers.ModelSerializer):
def to_representation(self, instance): def to_representation(self, instance):
data = super().to_representation(instance) data = super().to_representation(instance)
remaining_loan_time = instance.due_date.day - timezone.now().day remaining_loan_time = timezone.now().day - instance.due_date.day
data["remaining_loan_time"] = str(remaining_loan_time) + " days left" data["remaining_loan_time"] = str(remaining_loan_time) + " days left"
return data return data
...@@ -23,6 +23,7 @@ class BookLoanSerializer(serializers.ModelSerializer): ...@@ -23,6 +23,7 @@ class BookLoanSerializer(serializers.ModelSerializer):
class MemberLoanSerializer(BookLoanSerializer): class MemberLoanSerializer(BookLoanSerializer):
book_detail = BookSerializer(source="book", read_only=True)
is_overdue = serializers.BooleanField(read_only=True) is_overdue = serializers.BooleanField(read_only=True)
def to_representation(self, instance): def to_representation(self, instance):
...@@ -32,4 +33,11 @@ class MemberLoanSerializer(BookLoanSerializer): ...@@ -32,4 +33,11 @@ class MemberLoanSerializer(BookLoanSerializer):
class Meta: class Meta:
model = BookLoan model = BookLoan
fields = ["book", "loan_date", "due_date", "is_overdue"] fields = [
"book",
"book_detail",
"member",
"loan_date",
"due_date",
"is_overdue",
]
...@@ -57,4 +57,4 @@ class MemberLoanViewSet(BookLoanViewSet): ...@@ -57,4 +57,4 @@ class MemberLoanViewSet(BookLoanViewSet):
def get_queryset(self): def get_queryset(self):
member_id = self.kwargs.get("member_id") member_id = self.kwargs.get("member_id")
return BookLoan.objects.filter(member__id=member_id).order_by("loan_date") return BookLoan.objects.filter(member=member_id).order_by("loan_date")
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