Skip to main content

Add magic authorization links to your django project.

Project description

Django Magic Authorization

This middleware adds simple token-based authorization for private content to any Django project.

Installation

First, install the package using your favorite python package manager

uv add django-magic-authorization

or

pip install django-magic-authorization

Second, you need to enable the app in your Django project.

# settings.py
INSTALLED_APPS = [
  ...
  "django_magic_authorization"
  ...
]

MIDDLEWARE = [
  ...
  "django_magic_authorization.middleware.MagicAuthorizationMiddleware",
  ...
]

Third, run the migrations to add the relevant schemas to your database

python manage.py migrate

Quickstart

Authorization happens on the URL level. The package offers a drop-in replacement for django.urls.path, that is used to mark urls as protected. You can use this in conjunction with include() to protect sub-paths quickly.

# urls.py
from django.urls import path, include
from django.http import HttpResponse
from django_magic_authorization.urls import protected_path


def test_view(request):
  return HttpResponse("Hello")

urlpatterns = [
  path("unprotected", test_view),
  protected_path("protected", test_view)
]

With a running development server

$ curl -s -o /dev/null -w "%{http_code}\n" http://localhost:8000/protected
403

This URL can now only be accessed by someone with a valid token.

There is a django admin interface for you to create, manage and delete access tokens for these protected paths. You can also do so in the shell.

>>> t = AccessToken.objects.create(path="protected", description="Test token creation")
>>> t.token
your-token-value

using this token to access the protected view:

$ curl -s -o /dev/null -w "%{http_code}\n" http://localhost:8000/protected?token=your-token-value
200

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

django_magic_authorization-0.1.4.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

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

django_magic_authorization-0.1.4-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file django_magic_authorization-0.1.4.tar.gz.

File metadata

File hashes

Hashes for django_magic_authorization-0.1.4.tar.gz
Algorithm Hash digest
SHA256 e3319f3883383606a37bbfcf654c317417059ee83baa57898e09cc41da472cf0
MD5 ce1643d619de6c1078b4dc457db83b2d
BLAKE2b-256 015810e86e6f14258331589fe3d6287cb23ba36c8d25c792368c08a402c6a993

See more details on using hashes here.

File details

Details for the file django_magic_authorization-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for django_magic_authorization-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f3593a685589df194515fd219e00ecdba8de320b9de3b8523df2bc15c6a65bf4
MD5 dd227c4b507518b5d5684f6d63bc7775
BLAKE2b-256 91aa7f00eef4b884ee436a8e4408e0583087339536c0e4fb9be4efd39b09c659

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