Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
L
library-app-django
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ilham Maulana
library-app-django
Commits
c46742c8
Commit
c46742c8
authored
Jul 27, 2024
by
Ilham Maulana
💻
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: user detail by token api
parent
f7c1d565
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
40 additions
and
2 deletions
+40
-2
serializers.py
api/auth/serializers.py
+9
-1
views.py
api/auth/views.py
+24
-0
urls.py
api/urls.py
+6
-0
urls.py
config/urls.py
+1
-1
No files found.
api/auth/serializers.py
View file @
c46742c8
from
django.contrib.auth
import
authenticate
from
rest_framework
import
serializers
from
rest_framework_simplejwt.serializers
import
TokenObtainPairSerializer
from
users.models
import
User
,
Librarian
,
Member
,
LibrarianLoginHistory
...
...
@@ -149,3 +149,11 @@ class MemberSerializer(serializers.ModelSerializer):
Member
.
objects
.
filter
(
id
=
instance
.
id
)
.
update
(
user
=
user
[
0
])
instance
.
save
()
return
instance
class
TokenSerializer
(
TokenObtainPairSerializer
):
@
classmethod
def
get_token
(
cls
,
user
):
token
=
super
()
.
get_token
(
user
)
token
[
"user_id"
]
=
user
.
id
return
token
api/auth/views.py
View file @
c46742c8
import
json
from
django.contrib.auth
import
authenticate
from
django.contrib.auth.tokens
import
default_token_generator
...
...
@@ -7,6 +8,7 @@ from rest_framework import views, viewsets, status
from
rest_framework.response
import
Response
from
rest_framework.filters
import
SearchFilter
from
rest_framework_simplejwt.views
import
TokenObtainPairView
from
rest_framework_simplejwt.tokens
import
AccessToken
from
.serializers
import
(
User
,
...
...
@@ -16,6 +18,7 @@ from .serializers import (
LoginHistorySerializer
,
Member
,
MemberSerializer
,
TokenSerializer
,
)
from
.permissions
import
IsStaffUser
,
IsNotStaffUser
...
...
@@ -71,7 +74,28 @@ class MemberViewSet(viewsets.ModelViewSet):
return
Response
(
serializer
.
data
,
status
=
status
.
HTTP_200_OK
)
class
UserDetailView
(
views
.
APIView
):
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
header
=
request
.
headers
.
get
(
"Authorization"
)
token
=
header
.
replace
(
"Bearer "
,
""
)
verified_token
=
AccessToken
(
token
=
token
)
user_id
=
verified_token
.
payload
.
get
(
"user_id"
)
user
=
User
.
objects
.
get
(
pk
=
user_id
)
data
=
{
"id"
:
user
.
pk
,
"username"
:
user
.
username
,
"email"
:
user
.
email
,
"first_name"
:
user
.
first_name
,
"last_name"
:
user
.
last_name
,
"is_staff"
:
user
.
is_staff
,
}
return
Response
(
data
,
status
=
status
.
HTTP_200_OK
)
class
LoginBaseView
(
TokenObtainPairView
):
serializer_class
=
TokenSerializer
user
=
None
def
post
(
self
,
request
,
*
args
,
**
kwargs
):
...
...
api/urls.py
View file @
c46742c8
...
...
@@ -13,6 +13,7 @@ from .auth.views import (
LogoutView
,
TokenResetPasswordView
,
ResetPasswordConfirmView
,
UserDetailView
,
)
from
.book.views
import
BookViewSet
,
CategoryViewSet
from
.loans.views
import
(
...
...
@@ -45,6 +46,11 @@ router_member_loan.register(r"loans", MemberLoanViewSet, basename="member_loans"
urlpatterns
=
[
path
(
""
,
include
(
router
.
urls
)),
# auth
path
(
"user"
,
UserDetailView
.
as_view
(),
name
=
"user_detail"
,
),
path
(
"reset-password/request-token"
,
TokenResetPasswordView
.
as_view
(),
...
...
config/urls.py
View file @
c46742c8
...
...
@@ -54,7 +54,7 @@ urlpatterns = [
name
=
"password_reset_complete"
,
),
# api
path
(
"api/token/refresh/"
,
TokenRefreshView
.
as_view
(),
name
=
"token_refresh"
),
path
(
"api/
v1/
token/refresh/"
,
TokenRefreshView
.
as_view
(),
name
=
"token_refresh"
),
path
(
"api/v1/"
,
include
(
"api.urls"
),
name
=
"API_V1"
),
# 3rd party
path
(
"api-auth/"
,
include
(
"rest_framework.urls"
),
name
=
"api_auth"
),
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment