Skip to main content

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

Project description

pipeline status coverage report Code style: black python version license latest version

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,stubs]
  • Install dev requirements pip install -r requirements-dev.txt.
  • Install git hooks to automatically format code using black with pre-commit install

Migrations

To create migrations after modifying database models run ./manage.py makemigrations

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-2.2.3.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

django_identities-2.2.3-py3-none-any.whl (24.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: django-identities-2.2.3.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for django-identities-2.2.3.tar.gz
Algorithm Hash digest
SHA256 7ccba1523296a5b972977f628e0220569dd7ac2671a75323ff04a238095d092c
MD5 3f97b79f1214b1cb195b601a43af5091
BLAKE2b-256 b0f76e3e697e937c2b9d051bf1cca00bd0128867aa8309789c8955dbf7d333e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for django_identities-2.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f736bac4bf9ad154ceea1e94e054925893d1a4b3355ff2fd3159d7f2d3c28196
MD5 9c1418b1ceebe2efbd467c7886f0b984
BLAKE2b-256 10337b89dcf1dd79458b44649b01f84e78e01b9cea606999ad069c777d6e6621

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