Skip to main content

A django app with authentication related functionality, a custom user model and object level permissions / groups.

Project description

Code style: black

django-identities

Releases

This project follows the semantic versioning specification for its releases.

Development

Requirements

  • Python >=3.7
  • Django >=3.2
  • django-rest-framework >=3.12

Setup

  • Create and activate a python3 venv.
  • Install the library in the editable mode pip install -e .[test]
  • Install dev requirements pip install -r requirements-dev.txt.
  • Install git hooks to automatically format code using black with pre-commit install

Installation

From git in requirements.txt

  1. To install this package from this git repository, add the django-identities package to the requirements.txt file.

  2. Add guardian and identities to settings.INSTALLED_APPS:

INSTALLED_APPS = (
    #...
    'guardian',
    'identities',
    #...
)
  1. Add the following to your settings, replacing all values with REPLACE with your configuration:
AUTH_USER_MODEL = "identities.User"
GUARDIAN_MONKEY_PATCH = False
GUARDIAN_GET_INIT_ANONYMOUS_USER = "identities.models.get_anonymous_user_instance"

AUTHENTICATION_BACKENDS = [
    "django.contrib.auth.backends.ModelBackend",
    "guardian.backends.ObjectPermissionBackend",
]

AUTHLIB_OAUTH_CLIENTS = {
    "identity_provider": {
        "client_id": "REPLACE OIDC client_id",
        "client_secret": "REPLACE OIDC client_secret",
        "server_metadata_url": "REPLACE OIDC config_url",
        "client_kwargs": {"scope": "openid email profile"},
    }
}
LOGIN_REDIRECT_URL = "REPLACE OIDC login_redirect_url"
LOGOUT_REDIRECT_URL = "REPLACE OIDC logout_redirect_url"
  1. In <app>/urls.py, extend urlpatterns like this:
urlpatterns = [
    #...
    re_path(r"^backend/identity/", include("identities.urls")),
    re_path(
        r"^backend/identity/auth/local/",
        include("rest_framework.urls", namespace="rest_framework"),
    ),
    #...
]
  1. Extend the file <app>/templates/rest_framework/base.html with the following:
{% if user.is_authenticated %}
<li class="dropdown">
  <a href="#" class="dropdown-toggle" data-toggle="dropdown">
    {{ user.email }}
    <b class="caret"></b>
  </a>
  <ul class="dropdown-menu" style="padding: 0;">
    <form action="{% url 'identities:oidc-logout' %}" method="post">
      {% csrf_token %}
      <button name="logout" value="logout" class="btn btn-default btn-block">
        Log out
      </button>
    </form>
  </ul>
</li>
{% else %}
<li>
  <a href="{% url 'identities:oidc-authenticate' %}">Log in (federation)</a>
</li>
<li>
  <a href="{% url 'rest_framework:login' %}">Log in (local)</a>
</li>
{% endif %}
  1. Run ./manage.py migrate

  2. Restart your application server

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-identities-1.0.3.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

django_identities-1.0.3-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

Details for the file django-identities-1.0.3.tar.gz.

File metadata

  • Download URL: django-identities-1.0.3.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for django-identities-1.0.3.tar.gz
Algorithm Hash digest
SHA256 d47021324aa0bc04bc46d0d2081c4a3cadaa010082f1b013811842fd6a13cd7f
MD5 74c0652d2079d1cc0c78473844e8fde3
BLAKE2b-256 5bad1d5737b8cd4e5c7044cace0a26d09c555e4720fc6e3f0905ffbef99cb9bd

See more details on using hashes here.

File details

Details for the file django_identities-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: django_identities-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 19.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.5.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.1 CPython/3.9.5

File hashes

Hashes for django_identities-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 30fe9e026d1be9d27a2132aca1fd5df55b0fae9097d2865abb20cd1aa6bbfcc2
MD5 faa56e59d6a6d787bf97b9bfd5a6cc24
BLAKE2b-256 9c8e56be0d515d5293829d4e342d9686a2a4be8698acaa300841cd3173b233e0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page