Commit 11672ca0 authored by impfundev's avatar impfundev

feat: setup authentication

parent 486a28c4
from django.contrib import admin
# Register your models here.
from django.apps import AppConfig
class ApiConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'api'
from django.contrib.auth import get_user_model
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = get_user_model()
fields = ["url", "id", "username", "email", "is_staff"]
from django.test import TestCase
# Create your tests here.
from django.urls import path, include
from rest_framework import routers
from api.views import UserViewSet
router = routers.DefaultRouter()
router.register(r"users", UserViewSet, basename="user")
urlpatterns = [
path("", include(router.urls)),
]
from rest_framework.viewsets import ModelViewSet
from rest_framework.permissions import IsAuthenticated
from api.serializers import get_user_model, UserSerializer
class UserViewSet(ModelViewSet):
permission_classes = [IsAuthenticated]
queryset = get_user_model().objects.all().order_by("id")
serializer_class = UserSerializer
...@@ -54,21 +54,44 @@ if DEBUG: ...@@ -54,21 +54,44 @@ if DEBUG:
# Application definition # Application definition
INSTALLED_APPS = [ INSTALLED_APPS = [
"books.apps.BooksConfig",
"book_loans.apps.BookLoansConfig",
"members.apps.MembersConfig",
"librarians.apps.LibrariansConfig",
"authentications.apps.AuthenticationsConfig",
"dashboards.apps.DashboardsConfig",
"django.contrib.admin", "django.contrib.admin",
"django.contrib.auth", "django.contrib.auth",
"django.contrib.contenttypes", "django.contrib.contenttypes",
"django.contrib.sessions", "django.contrib.sessions",
"django.contrib.messages", "django.contrib.messages",
"django.contrib.staticfiles", "django.contrib.staticfiles",
# 3rd party
"debug_toolbar", "debug_toolbar",
"rest_framework",
"rest_framework.authtoken",
"allauth",
"allauth.account",
"allauth.socialaccount",
"dj_rest_auth",
"dj_rest_auth.registration",
# local
"api.apps.ApiConfig",
"books.apps.BooksConfig",
"members.apps.MembersConfig",
"book_loans.apps.BookLoansConfig",
"librarians.apps.LibrariansConfig",
"dashboards.apps.DashboardsConfig",
"authentications.apps.AuthenticationsConfig",
] ]
# 3rd party config
# DJANGO REST FRAMEWORK CONFIG
REST_FRAMEWORK = {
"DEFAULT_AUTHENTICATION_CLASSES": [
"rest_framework.authentication.SessionAuthentication",
"rest_framework.authentication.TokenAuthentication",
],
"DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination",
"PAGE_SIZE": 10,
}
MIDDLEWARE = [ MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware", "django.middleware.security.SecurityMiddleware",
"whitenoise.middleware.WhiteNoiseMiddleware", "whitenoise.middleware.WhiteNoiseMiddleware",
...@@ -78,10 +101,11 @@ MIDDLEWARE = [ ...@@ -78,10 +101,11 @@ MIDDLEWARE = [
"django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware", "django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware", "django.middleware.clickjacking.XFrameOptionsMiddleware",
"authentications.middleware.AuthMiddleware", # 3rd party
"debug_toolbar.middleware.DebugToolbarMiddleware", "debug_toolbar.middleware.DebugToolbarMiddleware",
# "django.middleware.cache.UpdateCacheMiddleware", "allauth.account.middleware.AccountMiddleware",
# "django.middleware.cache.FetchFromCacheMiddleware", # local
"authentications.middleware.AuthMiddleware",
] ]
ROOT_URLCONF = "config.urls" ROOT_URLCONF = "config.urls"
......
...@@ -19,17 +19,16 @@ from django.contrib import admin ...@@ -19,17 +19,16 @@ from django.contrib import admin
from django.urls import path from django.urls import path
from django.conf.urls import include from django.conf.urls import include
from dashboards.views import home from dashboards.views import home
from django.views.decorators.cache import cache_page
from django.conf import settings
urlpatterns = [ urlpatterns = [
path( path("", home, name="homepage"),
"",
cache_page(settings.CACHE_TTL, key_prefix="homepage")(home),
name="homepage",
),
path("dashboard/", include("dashboards.urls")), path("dashboard/", include("dashboards.urls")),
path("admin/", admin.site.urls), path("admin/", admin.site.urls),
path("auth/", include("authentications.urls")), path("auth/", include("authentications.urls")),
path("__debug__/", include("debug_toolbar.urls")), path("__debug__/", include("debug_toolbar.urls")),
# API
path("api/v1/", include("api.urls")),
path("api/v1/auth/", include("dj_rest_auth.urls")),
path("api/v1/auth/registration/", include("dj_rest_auth.registration.urls")),
path("api-auth/", include("rest_framework.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