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]
- 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
-
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 Distribution
django-identities-1.0.4.tar.gz
(15.0 kB
view details)
Built Distribution
File details
Details for the file django-identities-1.0.4.tar.gz
.
File metadata
- Download URL: django-identities-1.0.4.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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6e009fe9a1ba44f987c9010f00e4c07f24581367360d615fe0743c8c24983d65 |
|
MD5 | 6b2fd38291eba2e75bd4e8de99821191 |
|
BLAKE2b-256 | 083bed27aaa2e3b3c28a9f1f03ca7bfcf4ba2a706de99a6694d594047453632e |
File details
Details for the file django_identities-1.0.4-py3-none-any.whl
.
File metadata
- Download URL: django_identities-1.0.4-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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d8d2fab7d001ac81fdb5e18586d3d100e8712566b949555fdc58dbe0110eed7 |
|
MD5 | db754cc8aabe05f7aa5e1fd56bcd7277 |
|
BLAKE2b-256 | 9acbaf51d138f0626cd6366d7ce202f233782b53248a3198abca5a1640b1e839 |