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

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for django_magic_authorization-0.1.5.tar.gz
Algorithm Hash digest
SHA256 a29906bcd1e6f674804ecb78aa44aa54d964ecb24344d4cf881178be78c6e4f1
MD5 604144eb88486a84fa6b43cfeac4116b
BLAKE2b-256 bf6386731d822b737b54c242fd0be7370a2beca00b1725780246e132505b2d5a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_magic_authorization-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 ecfa1db8852bf2d7d67dd5c8ebc1d841281e854f7afb53a2e35c29df924efcc3
MD5 797daef46e91fbb246547a7a825362b0
BLAKE2b-256 a74a8c816ac4b9bffe000831840683ce84f477e3ce9fc8e57da0f491cb2a29c2

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