Skip to main content

Django app for an endpoint authentication.

Project description

Email Auth Remote

Проект для интеграции МС авторизации с другими Django МС.

Как пользоваться

Добавить проект в INSTALLED_APPS.

# File: settings.py

INSTALLED_APPS = [
    ...
    "rest_framework_simplejwt",
    "email_auth_remote",
]

В urlpatterns добавить include("email_auth_remote.urls") перед admin.site.urls.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("api/v1/catalog/admin/", include("email_auth_remote.urls")),
    path("api/v1/catalog/admin/", admin.site.urls),
]

Установить переменные в settings.py.

# File: settings.py

## defaults:
EMAIL_AUTH_REMOTE = {
    "JWT_AUTH_COOKIE": None,
    "JWT_AUTH_REFRESH_COOKIE": None,
    "JWT_AUTH_REFRESH_COOKIE_PATH": "/",
    "JWT_AUTH_COOKIE_USE_CSRF": False,
    "JWT_AUTH_COOKIE_ENFORCE_CSRF_ON_UNAUTHENTICATED": False,
    "JWT_AUTH_SECURE": False,
    "JWT_AUTH_HTTPONLY": True,
    "JWT_AUTH_SAMESITE": "Lax",
    "JWT_AUTH_COOKIE_DOMAIN": None,
    "JWT_REFRESH_URL": None,
    "ADMIN_LOGIN_URL": None,
    "LOGOUT_URL": None,
}

## examples:
EMAIL_AUTH_REMOTE = {
    "JWT_AUTH_COOKIE": "jwt_access_token",
    "JWT_AUTH_REFRESH_COOKIE": "jwt_refresh_token",
    "JWT_AUTH_REFRESH_COOKIE_PATH": "/",
    "JWT_AUTH_COOKIE_USE_CSRF": True,
    "JWT_REFRESH_URL": "http://auth:8000/api/v1/auth/token/refresh/",
    "ADMIN_LOGIN_URL": "/api/v1/auth/admin/login/",
    "LOGOUT_URL": "http://auth:8000/api/v1/auth/logout/",
    "JWT_AUTH_COOKIE_ENFORCE_CSRF_ON_UNAUTHENTICATED": False,
    "JWT_AUTH_SECURE": False,
    "JWT_AUTH_HTTPONLY": True,
    "JWT_AUTH_SAMESITE": "Lax",
    "JWT_AUTH_COOKIE_DOMAIN": None,
}

Добавить класс аутентификации

# File: settings.py

REST_FRAMEWORK = {
    "DEFAULT_AUTHENTICATION_CLASSES": [
        "email_auth_remote.authentication.JWTStatelessCookieAuthentication",
    ],
}

Важная информация: При использовании библиотеки модель CustomTokenUser, полученная через request.user не будет сохранена в БД. На эту модель невозможно ссылаться через ForeignKey и тд. Сохранение в БД также невозможно.

Разрешения IsDesigner IsSeller

Всего есть 4 возможных permissions.

from email_auth_remote.permissions import (
    IsDesigner,
    IsSeller,
    IsSellerOrReadOnly,
    IsDesignerOrReadOnly,
)

class ExampleView(generics.GenericAPIView):
    """
    Пример View только для продавца.
    """
    permission_classes = (IsSeller,)
    # other logic here ...

Сборка

Необходимо только для сборки, для интеграции не надо.

Как собрать проект локально

python3 -m pip install build
python3 -m build 

Проверка собранного пакета

python3 -m pip install twine
twine check dist/*

Выкладывание проекта в PYPI

twine upload dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

email_auth_remote-1.3.0.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

email_auth_remote-1.3.0-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file email_auth_remote-1.3.0.tar.gz.

File metadata

  • Download URL: email_auth_remote-1.3.0.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.9

File hashes

Hashes for email_auth_remote-1.3.0.tar.gz
Algorithm Hash digest
SHA256 f2f888202a9df6ed77651158ea298cbee3127bfc9a2a5c0a2a9ffbff1d1c1e78
MD5 582da9eb63fbe10bff218731b85fdd25
BLAKE2b-256 eb74002e8ac9e245d0de89390bfdbb6362ee9415d6ec293ac8fb01078d4ac6a7

See more details on using hashes here.

File details

Details for the file email_auth_remote-1.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for email_auth_remote-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2c274e97fb3fa4d36728f7b81d158d92dc47967d4c92ab5f39294a8d3fb47cfc
MD5 840ccca1f851835e4cb6b453b8ece3c7
BLAKE2b-256 a9dbb8a24630f8d2445d22c4100d948916eb5f5aec27831885013cad3299a3cd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page