feat: implement LMS core (CMS, Courses, Enrollment, Progress, Auth) (Admin + API)
Build & Push Docker Image (Backend) / build (push) Successful in 54s
Build & Push Docker Image (Backend) / build (push) Successful in 54s
This commit is contained in:
+28
-1
@@ -10,6 +10,7 @@ For the full list of settings and their values, see
|
||||
https://docs.djangoproject.com/en/6.0/ref/settings/
|
||||
"""
|
||||
import os
|
||||
from datetime import timedelta
|
||||
from pathlib import Path
|
||||
|
||||
from django.templatetags.static import static
|
||||
@@ -48,6 +49,7 @@ INSTALLED_APPS = [
|
||||
# Third-party Apps
|
||||
'rest_framework', # สำหรับจัดการ API
|
||||
'corsheaders', # สำหรับจัดการ CORS (สำคัญมากถ้ามีหน้าบ้านแยก)
|
||||
"django_filters",
|
||||
|
||||
# LOCAL APPS
|
||||
'apps.accounts',
|
||||
@@ -109,9 +111,34 @@ DATABASES = {
|
||||
|
||||
REST_FRAMEWORK = {
|
||||
"DEFAULT_AUTHENTICATION_CLASSES": (
|
||||
# สำหรับ Django Admin (ยังจำเป็น)
|
||||
"rest_framework.authentication.SessionAuthentication",
|
||||
"rest_framework.authentication.TokenAuthentication",
|
||||
# สำหรับ API ทั้งหมด
|
||||
"rest_framework_simplejwt.authentication.JWTAuthentication",
|
||||
),
|
||||
|
||||
|
||||
"DEFAULT_PERMISSION_CLASSES": (
|
||||
# ค่า default ต้อง login ก่อน
|
||||
"rest_framework.permissions.IsAuthenticated",
|
||||
),
|
||||
|
||||
|
||||
"DEFAULT_FILTER_BACKENDS": [
|
||||
"django_filters.rest_framework.DjangoFilterBackend",
|
||||
],
|
||||
|
||||
"DEFAULT_PAGINATION_CLASS": (
|
||||
"rest_framework.pagination.PageNumberPagination"
|
||||
),
|
||||
"PAGE_SIZE": 10,
|
||||
|
||||
}
|
||||
|
||||
SIMPLE_JWT = {
|
||||
"ACCESS_TOKEN_LIFETIME": timedelta(minutes=15),
|
||||
"REFRESH_TOKEN_LIFETIME": timedelta(days=7),
|
||||
"AUTH_HEADER_TYPES": ("Bearer",), # กำหนด client ส่ง header แบบ Authorization: Bearer <token>
|
||||
}
|
||||
|
||||
CORS_ALLOW_ALL_ORIGINS = True # ควรเป็น False ใน Production
|
||||
|
||||
+19
-23
@@ -1,23 +1,19 @@
|
||||
"""
|
||||
URL configuration for core project.
|
||||
|
||||
The `urlpatterns` list routes URLs to views. For more information please see:
|
||||
https://docs.djangoproject.com/en/6.0/topics/http/urls/
|
||||
Examples:
|
||||
Function views
|
||||
1. Add an import: from my_app import views
|
||||
2. Add a URL to urlpatterns: path('', views.home, name='home')
|
||||
Class-based views
|
||||
1. Add an import: from other_app.views import Home
|
||||
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
|
||||
Including another URLconf
|
||||
1. Import the include() function: from django.urls import include, path
|
||||
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
||||
"""
|
||||
from django.contrib import admin
|
||||
from django.urls import path, include
|
||||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
path('', include('apps.common.urls')),
|
||||
]
|
||||
from django.contrib import admin
|
||||
from django.urls import path, include
|
||||
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView
|
||||
|
||||
from apps.accounts.views import MeView
|
||||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
path('', include('apps.common.urls')),
|
||||
|
||||
# Login
|
||||
path('api/auth/login/',TokenObtainPairView.as_view(), name='token_obtain_pair'),
|
||||
|
||||
# Refresh token
|
||||
path('api/auth/refresh/',TokenRefreshView.as_view(), name='token_refresh'),
|
||||
|
||||
# Me
|
||||
path('api/auth/me/', MeView.as_view(), name='me'),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user