diff --git a/README.md b/README.md index bea3b2981e09e028216f3995f825d4df2d861ab2..782ed269a64824cf32238106708a6afd84c0c473 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,75 @@ # Pirates Django app na uživatele, týmy a skupiny, s napojením na LDAP a SSO. + +[](https://github.com/psf/black) + + +## Použití + +### Settings + +Přidat `pirates` do `INSTALLED_APPS`. + +### Modely + +Jsou k dipozici abstraktní modely pro uživatele, tým a organizační skupinu. Ty +lze doplnit o další fieldy specifické pro aplikaci. Příklad: + +```python +from django.db import models +from pirates.models import AbstractUser + +class CustomUser(AbstractUser): + is_friendly = models.BooleanField(default=True) +``` + +A nezapomenout model pro uživatele nastavit v settings: + +```python +AUTH_USER_MODEL = "myapp.CustomUser" +``` + +### URLs + +URL patterns (v současné době pouze pro OpenID Connect) jsou definovány v +`pirates.urls`. Stačí je připojit k URL patterns projektu: + +```python +from pirates.urls import urlpatterns as pirates_urlpatterns + +urlpatterns = [ + # URL patterns projektu + # ... +] + pirates_urlpatterns + +``` + +### SSO přes OpenID Connect + +Implementaci OpenID zajišťuje knihovna +[mozilla-django-oidc](https://github.com/mozilla/mozilla-django-oidc). + +V settings projektu je třeba nastavit několik konfiguračních konstant a +autentifikační backend. Příklad settings (s využitím +[django-environ](https://github.com/joke2k/django-environ)): + +```python +from os.path import join +import environ + +env = environ.Env() + +AUTHENTICATION_BACKENDS = ["pirates.auth.PiratesOIDCAuthenticationBackend"] + +OIDC_RP_CLIENT_ID = env.str("OIDC_RP_CLIENT_ID") +OIDC_RP_CLIENT_SECRET = env.str("OIDC_RP_CLIENT_SECRET") +OIDC_RP_REALM_URL = env.str("OIDC_RP_REALM_URL") +OIDC_RP_SIGN_ALGO = "RS256" +OIDC_OP_JWKS_ENDPOINT = join(OIDC_RP_REALM_URL, "protocol/openid-connect/certs") +OIDC_OP_AUTHORIZATION_ENDPOINT = join(OIDC_RP_REALM_URL, "protocol/openid-connect/auth") +OIDC_OP_TOKEN_ENDPOINT = join(OIDC_RP_REALM_URL, "protocol/openid-connect/token") +OIDC_OP_USER_ENDPOINT = join(OIDC_RP_REALM_URL, "protocol/openid-connect/userinfo") +``` + +URL patterns pro OpenID Connect už jsou součástí `pirates.urls` (viz výše). diff --git a/pirates/urls.py b/pirates/urls.py index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d124836ae6447a65583a43281c329a4e1bcb0d7f 100644 --- a/pirates/urls.py +++ b/pirates/urls.py @@ -0,0 +1,5 @@ +from django.urls import include, path + +urlpatterns = [ + path("oidc/", include("mozilla_django_oidc.urls")), +] diff --git a/setup.py b/setup.py index 33f38e88c2a46b5835790015af9e4cc4a3c55b7d..3de7eef35247aabb65ec8936562190c3ab23f85b 100755 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ def read(fname): setup( name="pirates", - version="0.1.0", + version="0.2.0", license="MIT", description="Django app for users, teamds and groups.", long_description=read("README.md"),