Skip to main content

Add magic authorization links to your django project.

Project description

Django Magic Authorize

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.MagicAuthorizeMiddleware",
  ...
]

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.0.tar.gz (4.7 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.0-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for django_magic_authorization-0.1.0.tar.gz
Algorithm Hash digest
SHA256 098c8cfb8cd96f1fb5218a222fb4aa94df077adc163371b11b1d1b2a12c8c557
MD5 8da91ff5e4403c967253985bcb72f0e5
BLAKE2b-256 9c44ece7882fc973f4f85cff4275b11bbdbcdd3f7b7ec1bd7803ff709d7ea62f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_magic_authorization-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 710238374530582f73294bd64a85cfea092add86ac42991d523e042565ca225f
MD5 ae537221aa0dd0fd3fd8f1d01539c7e5
BLAKE2b-256 7d1b5d2a594e0a30556abc5745112f8f9b7968cca3b8eb1e33b5d082d0d14d77

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