auth service created
This commit is contained in:
2
.env.example
Normal file
2
.env.example
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
AUTH_COMMAND=sh ./resources/scripts/entrypoint.sh
|
||||||
|
JWT_KEY=key
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
"""
|
|
||||||
Accounts app urls
|
|
||||||
"""
|
|
||||||
|
|
||||||
from django.urls import path, include
|
|
||||||
from rest_framework_simplejwt import views as jwt_views
|
|
||||||
from .views import RegisterView, ResetPasswordView, MeView, ChangePasswordView
|
|
||||||
from rest_framework.routers import DefaultRouter
|
|
||||||
|
|
||||||
router = DefaultRouter()
|
|
||||||
router.register("auth", RegisterView, basename="auth")
|
|
||||||
router.register("auth", ResetPasswordView, basename="reset-password")
|
|
||||||
router.register("auth", MeView, basename="me")
|
|
||||||
router.register("auth", ChangePasswordView, basename="change-password")
|
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
|
||||||
path("", include(router.urls)),
|
|
||||||
path("auth/token/", jwt_views.TokenObtainPairView.as_view(), name="token_obtain_pair"),
|
|
||||||
path("auth/token/verify/", jwt_views.TokenVerifyView.as_view(), name="token_verify"),
|
|
||||||
path(
|
|
||||||
"auth/token/refresh/",
|
|
||||||
jwt_views.TokenRefreshView.as_view(),
|
|
||||||
name="token_refresh",
|
|
||||||
),
|
|
||||||
]
|
|
||||||
@@ -7,16 +7,35 @@ volumes:
|
|||||||
pycache: null
|
pycache: null
|
||||||
|
|
||||||
services:
|
services:
|
||||||
auth-nginx:
|
traefik:
|
||||||
|
image: traefik:v2.10
|
||||||
|
command:
|
||||||
|
- "--api.insecure=true"
|
||||||
|
- "--providers.docker=true"
|
||||||
|
- "--entrypoints.web.address=:80"
|
||||||
|
- "--providers.docker.exposedbydefault=false"
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "8080:8080" # Dashboard uchun
|
||||||
|
volumes:
|
||||||
|
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||||
|
networks:
|
||||||
|
- lamenu
|
||||||
|
auth-nginx:
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.auth.rule=PathPrefix(`/auth`)"
|
||||||
|
- "traefik.http.routers.auth.entrypoints=web"
|
||||||
|
- "traefik.http.services.auth.loadbalancer.server.port=80"
|
||||||
|
- "traefik.http.middlewares.auth-strip-prefix.stripPrefix.prefixes=/auth"
|
||||||
|
- "traefik.http.routers.auth.middlewares=auth-strip-prefix"
|
||||||
networks:
|
networks:
|
||||||
- lamenu
|
- lamenu
|
||||||
ports:
|
|
||||||
- ${PORT:-8001}:80
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./auth/resources/layout/nginx.conf:/etc/nginx/nginx.conf
|
- ./services/auth/resources/layout/nginx.conf:/etc/nginx/nginx.conf
|
||||||
- ./auth/resources/:/usr/share/nginx/html/resources/
|
- ./services/auth/resources/:/usr/share/nginx/html/resources/
|
||||||
build:
|
build:
|
||||||
context: ./auth
|
context: ./services/auth
|
||||||
dockerfile: ./docker/Dockerfile.nginx
|
dockerfile: ./docker/Dockerfile.nginx
|
||||||
depends_on:
|
depends_on:
|
||||||
- auth
|
- auth
|
||||||
@@ -24,14 +43,15 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- lamenu
|
- lamenu
|
||||||
build:
|
build:
|
||||||
context: ./auth
|
context: ./services/auth
|
||||||
dockerfile: ./docker/Dockerfile.web
|
dockerfile: ./docker/Dockerfile.web
|
||||||
restart: always
|
restart: always
|
||||||
command: ${AUTH_COMMAND:-sh ./resources/scripts/entrypoint.sh}
|
command: ${AUTH_COMMAND:-sh ./resources/scripts/entrypoint.sh}
|
||||||
environment:
|
environment:
|
||||||
- PYTHONPYCACHEPREFIX=/var/cache/pycache
|
- PYTHONPYCACHEPREFIX=/var/cache/pycache
|
||||||
|
- JWT_KEY=${JWT_KEY}
|
||||||
volumes:
|
volumes:
|
||||||
- ./auth:/code
|
- ./services/auth:/code
|
||||||
- pycache:/var/cache/pycache
|
- pycache:/var/cache/pycache
|
||||||
depends_on:
|
depends_on:
|
||||||
- auth-db
|
- auth-db
|
||||||
|
|||||||
3
services/auth/.flake8
Normal file
3
services/auth/.flake8
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[flake8]
|
||||||
|
max-line-length = 120
|
||||||
|
ignore = E701, E704, W503
|
||||||
2
services/auth/README.MD
Normal file
2
services/auth/README.MD
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# JST-DJANGO
|
||||||
|
[Docs](https://docs.jscorp.uz)
|
||||||
@@ -9,7 +9,7 @@ SIMPLE_JWT = {
|
|||||||
"BLACKLIST_AFTER_ROTATION": False,
|
"BLACKLIST_AFTER_ROTATION": False,
|
||||||
"UPDATE_LAST_LOGIN": False,
|
"UPDATE_LAST_LOGIN": False,
|
||||||
"ALGORITHM": "HS256",
|
"ALGORITHM": "HS256",
|
||||||
"SIGNING_KEY": env("DJANGO_SECRET_KEY"),
|
"SIGNING_KEY": env("JWT_KEY"),
|
||||||
"VERIFYING_KEY": "",
|
"VERIFYING_KEY": "",
|
||||||
"AUDIENCE": None,
|
"AUDIENCE": None,
|
||||||
"ISSUER": None,
|
"ISSUER": None,
|
||||||
@@ -109,7 +109,7 @@ AUTH_PASSWORD_VALIDATORS = [
|
|||||||
TIME_ZONE = "Asia/Tashkent"
|
TIME_ZONE = "Asia/Tashkent"
|
||||||
USE_I18N = True
|
USE_I18N = True
|
||||||
USE_TZ = True
|
USE_TZ = True
|
||||||
STATIC_URL = "resources/static/"
|
STATIC_URL = "/auth/resources/static/"
|
||||||
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
||||||
|
|
||||||
# Date formats
|
# Date formats
|
||||||
@@ -140,7 +140,7 @@ LOCALE_PATHS = [os.path.join(BASE_DIR, "resources/locale")]
|
|||||||
LANGUAGE_CODE = "uz"
|
LANGUAGE_CODE = "uz"
|
||||||
|
|
||||||
MEDIA_ROOT = os.path.join(BASE_DIR, "resources/media") # Media files
|
MEDIA_ROOT = os.path.join(BASE_DIR, "resources/media") # Media files
|
||||||
MEDIA_URL = "/resources/media/"
|
MEDIA_URL = "/auth/resources/media/"
|
||||||
|
|
||||||
AUTH_USER_MODEL = "accounts.User"
|
AUTH_USER_MODEL = "accounts.User"
|
||||||
|
|
||||||
@@ -152,9 +152,6 @@ CSRF_TRUSTED_ORIGINS = env("CSRF_TRUSTED_ORIGINS").split(",")
|
|||||||
SILKY_AUTHORISATION = True
|
SILKY_AUTHORISATION = True
|
||||||
SILKY_PYTHON_PROFILER = True
|
SILKY_PYTHON_PROFILER = True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
JST_LANGUAGES = [
|
JST_LANGUAGES = [
|
||||||
{
|
{
|
||||||
"code": "uz",
|
"code": "uz",
|
||||||
26
services/auth/core/apps/accounts/urls.py
Normal file
26
services/auth/core/apps/accounts/urls.py
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
"""
|
||||||
|
Accounts app urls
|
||||||
|
"""
|
||||||
|
|
||||||
|
from django.urls import path, include
|
||||||
|
from rest_framework_simplejwt import views as jwt_views
|
||||||
|
from .views import RegisterView, ResetPasswordView, MeView, ChangePasswordView
|
||||||
|
from rest_framework.routers import DefaultRouter
|
||||||
|
|
||||||
|
router = DefaultRouter()
|
||||||
|
router.register("", RegisterView, basename="auth")
|
||||||
|
router.register("", ResetPasswordView, basename="reset-password")
|
||||||
|
router.register("", MeView, basename="me")
|
||||||
|
router.register("", ChangePasswordView, basename="change-password")
|
||||||
|
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path("", include(router.urls)),
|
||||||
|
path("token/", jwt_views.TokenObtainPairView.as_view(), name="token_obtain_pair"),
|
||||||
|
path("token/verify/", jwt_views.TokenVerifyView.as_view(), name="token_verify"),
|
||||||
|
path(
|
||||||
|
"token/refresh/",
|
||||||
|
jwt_views.TokenRefreshView.as_view(),
|
||||||
|
name="token_refresh",
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -29,14 +29,14 @@ http {
|
|||||||
server_name _;
|
server_name _;
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
proxy_pass http://web:8000;
|
proxy_pass http://auth:8000;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto https;
|
proxy_set_header X-Forwarded-Proto https;
|
||||||
proxy_set_header Host $http_host;
|
proxy_set_header Host $http_host;
|
||||||
}
|
}
|
||||||
location /ws/ {
|
location /ws/ {
|
||||||
proxy_pass http://web:8000; # Uvicorn serveri ishga tushadigan port
|
proxy_pass http://auth:8000; # Uvicorn serveri ishga tushadigan port
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
proxy_set_header Connection 'upgrade';
|
proxy_set_header Connection 'upgrade';
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user