Added jwt, swagger...

This commit is contained in:
maciejrusek
2026-03-11 23:20:03 +01:00
parent f84c708f0a
commit ca605ac59d
14 changed files with 83 additions and 7 deletions

View File

View File

@@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

View File

@@ -0,0 +1,5 @@
from django.apps import AppConfig
class AuthenticationConfig(AppConfig):
name = 'apps.authentication'

View File

@@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

View File

@@ -0,0 +1,14 @@
from django.urls import include, path
from rest_framework_simplejwt.views import (
TokenObtainPairView,
TokenRefreshView,
TokenVerifyView
)
urlpatterns = [
path('login/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
#path('signup/', ),
path('refresh/', TokenRefreshView.as_view(), name='token_refresh'),
path('verify/', TokenVerifyView.as_view(), name='token_verify'),
]

View File

@@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

View File

@@ -5,14 +5,14 @@ from apps.user.serializers import UserSerializer
from apps.user.models import User from apps.user.models import User
class ShelfSerializer(serializers.ModelSerializer): class ShelfSerializer(serializers.ModelSerializer):
user = UserSerializer(read_only=True)
class Meta: class Meta:
model = Shelf model = Shelf
fields = ["id", "name", "user"] fields = ["id", "name"]
read_only_fields = ["id"] read_only_fields = ["id"]
def create(self, validated_data): def create(self, validated_data):
# Pobieramy user_id z tokena request = self.context["request"]
validated_data["user"] = request.user
return super().create(validated_data) return super().create(validated_data)

View File

@@ -3,7 +3,17 @@ from django.shortcuts import render
from apps.shelves.models import Shelf from apps.shelves.models import Shelf
from apps.shelves.serializers import ShelfSerializer from apps.shelves.serializers import ShelfSerializer
from rest_framework import viewsets from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticated
from rest_framework_simplejwt.authentication import JWTAuthentication
class ShelvesViewSet(viewsets.ModelViewSet): class ShelvesViewSet(viewsets.ModelViewSet):
queryset = Shelf.objects.select_related("user") queryset = Shelf.objects.select_related("user")
serializer_class = ShelfSerializer serializer_class = ShelfSerializer
authentication_classes = [JWTAuthentication]
permission_classes = [IsAuthenticated]
def get_queryset(self):
return Shelf.objects.filter(user_id=self.request.user.pk)

View File

@@ -1,5 +1,11 @@
from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView
from django.urls import include, path from django.urls import include, path
urlpatterns = [ urlpatterns = [
path("shelves", include("apps.shelves.urls")) path("auth", include("apps.authentication.urls")),
path("shelves", include("apps.shelves.urls")),
path('schema/', SpectacularAPIView.as_view(), name='schema'),
path('swagger/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'),
] ]

View File

@@ -1,3 +1,7 @@
from django.contrib import admin from django.contrib import admin
from apps.user.models import User
# Register your models here. class UserAdmin(admin.ModelAdmin):
pass
admin.site.register(User, UserAdmin)

View File

@@ -16,6 +16,7 @@ ALLOWED_HOSTS = ["*"]
# Application definition # Application definition
INSTALLED_APPS = [ INSTALLED_APPS = [
"apps.authentication.apps.AuthenticationConfig",
"apps.user.apps.UserConfig", "apps.user.apps.UserConfig",
"apps.shelves.apps.ShelvesConfig", "apps.shelves.apps.ShelvesConfig",
"django.contrib.admin", "django.contrib.admin",
@@ -26,6 +27,8 @@ INSTALLED_APPS = [
"django.contrib.staticfiles", "django.contrib.staticfiles",
"rest_framework", "rest_framework",
"django_filters", "django_filters",
"rest_framework_simplejwt",
"drf_spectacular",
] ]
MIDDLEWARE = [ MIDDLEWARE = [
@@ -89,6 +92,26 @@ AUTH_PASSWORD_VALIDATORS = [
AUTH_USER_MODEL = "user.User" AUTH_USER_MODEL = "user.User"
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': [
'rest_framework.renderers.JSONRenderer',
],
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser',
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_simplejwt.authentication.JWTAuthentication',
],
'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
}
SPECTACULAR_SETTINGS = {
'TITLE': 'Library API',
'DESCRIPTION': 'Library project',
'VERSION': '1.0.0',
'SERVE_INCLUDE_SCHEMA': False,
}
# Internationalization # Internationalization
# https://docs.djangoproject.com/en/6.0/topics/i18n/ # https://docs.djangoproject.com/en/6.0/topics/i18n/

View File

@@ -2,4 +2,6 @@ django==6.0.3
django-environ==0.13.0 django-environ==0.13.0
djangorestframework==3.16.1 djangorestframework==3.16.1
django-filter==25.2 django-filter==25.2
djangorestframework-simplejwt==5.5.1
drf-spectacular==0.29.0
pillow==12.1.1 pillow==12.1.1