Added jwt, swagger...
This commit is contained in:
0
backend/apps/authentication/__init__.py
Normal file
0
backend/apps/authentication/__init__.py
Normal file
3
backend/apps/authentication/admin.py
Normal file
3
backend/apps/authentication/admin.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
# Register your models here.
|
||||||
5
backend/apps/authentication/apps.py
Normal file
5
backend/apps/authentication/apps.py
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class AuthenticationConfig(AppConfig):
|
||||||
|
name = 'apps.authentication'
|
||||||
0
backend/apps/authentication/migrations/__init__.py
Normal file
0
backend/apps/authentication/migrations/__init__.py
Normal file
3
backend/apps/authentication/models.py
Normal file
3
backend/apps/authentication/models.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# Create your models here.
|
||||||
3
backend/apps/authentication/tests.py
Normal file
3
backend/apps/authentication/tests.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
||||||
14
backend/apps/authentication/urls.py
Normal file
14
backend/apps/authentication/urls.py
Normal 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'),
|
||||||
|
]
|
||||||
3
backend/apps/authentication/views.py
Normal file
3
backend/apps/authentication/views.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
from django.shortcuts import render
|
||||||
|
|
||||||
|
# Create your views here.
|
||||||
@@ -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)
|
||||||
@@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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'),
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -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)
|
||||||
@@ -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/
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user