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
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 Distribution
django-identities-2.1.1.tar.gz
(16.1 kB
view details)
Built Distribution
File details
Details for the file django-identities-2.1.1.tar.gz
.
File metadata
- Download URL: django-identities-2.1.1.tar.gz
- Upload date:
- Size: 16.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3eb9ce86ecd4ca57046f585bb41db63ad32b8102db35af46189fb77bcb929e59 |
|
MD5 | f92c7f59af90bf53258485ac663f6b31 |
|
BLAKE2b-256 | 9665e49b2c7aec60f3236b9f3ae77f5cd75d58d55bb725dd2f28630403b4cfb3 |
File details
Details for the file django_identities-2.1.1-py3-none-any.whl
.
File metadata
- Download URL: django_identities-2.1.1-py3-none-any.whl
- Upload date:
- Size: 22.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dfd4444c1cf4b5803704f70f496fecd65c1c5d1418672fb8deb1fbf0a905b9a6 |
|
MD5 | 3f2ee942650ed6cfaa2bcf7b117ab939 |
|
BLAKE2b-256 | 99408085151c3c772b59352de49dc2a27266ab5abf9d9b0ffed64698218b8068 |