A django app with authentication related functionality, a custom user model and object level permissions / groups.
Project description
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
-
To install this package from this git repository, add the
django-identities
package to therequirements.txt
file. -
Add
guardian
andidentities
tosettings.INSTALLED_APPS
:
INSTALLED_APPS = (
#...
'guardian',
'identities',
#...
)
- Add the following to your
settings
, replacing all values withREPLACE
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"
- In
<app>/urls.py
, extendurlpatterns
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"),
),
#...
]
- 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 %}
-
Run
./manage.py migrate
-
Restart your application server
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
File details
Details for the file django_identities-2.2.1-py3-none-any.whl
.
File metadata
- Download URL: django_identities-2.2.1-py3-none-any.whl
- Upload date:
- Size: 23.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4619172567901aa8ad95dd9bba4cdf77981beb71fea21d641ad62f773a9f49dd |
|
MD5 | 05cce86180c1701ae154d776dac33f93 |
|
BLAKE2b-256 | 927629aa94a3fd3b32c6e64bd1a1e13784339529397f01581b37f52ec228decf |