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.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.3.tar.gz (5.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.3-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for django_magic_authorization-0.1.3.tar.gz
Algorithm Hash digest
SHA256 a8b3240799f695837fd01c9aa52252d49d5b61d081c88896989f675d7f9598dd
MD5 65094d5e34e01085efab16082269740b
BLAKE2b-256 1bcaddff7baedf84c9db66ad25d4f17c7931a6bd0607124baf69fc0dbd1c79d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_magic_authorization-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f84b9464af43ae185b899531316613cf70e7aebe7147c4912047b094897f8def
MD5 34ac5ec4e15302464527290bc8dad4e6
BLAKE2b-256 029660feff5345707d499fea8542906850d623530d63c4fb8abca9466ebdc49a

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