Skip to main content

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/*

Metadata

Release files for email-auth-remote 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for email-auth-remote 1.3.0
File Size Uploaded
email_auth_remote-1.3.0.tar.gz 7.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for email-auth-remote 1.3.0
File Interpreter ABI Platform
email_auth_remote-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 15.7 kB

Release files / email_auth_remote-1.3.0.tar.gz

Download URL email_auth_remote-1.3.0.tar.gz
Size 7.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f2f888202a9df6ed77651158ea298cbee3127bfc9a2a5c0a2a9ffbff1d1c1e78
BLAKE2b-256 checksum
How to use checksums
eb74002e8ac9e245d0de89390bfdbb6362ee9415d6ec293ac8fb01078d4ac6a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.9

Release files / email_auth_remote-1.3.0-py3-none-any.whl

Download URL email_auth_remote-1.3.0-py3-none-any.whl
Size 8.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2c274e97fb3fa4d36728f7b81d158d92dc47967d4c92ab5f39294a8d3fb47cfc
BLAKE2b-256 checksum
How to use checksums
a9dbb8a24630f8d2445d22c4100d948916eb5f5aec27831885013cad3299a3cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

1.3.0 This release

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.13

2 release files

1.0.12

2 release files

1.0.11

2 release files

1.0.10

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page