diff --git a/config/settings/base.py b/config/settings/base.py index 30b842c..e88668c 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -39,6 +39,7 @@ INSTALLED_APPS = [ "django.contrib.staticfiles", "django.contrib.humanize", "django_bootstrap5", + "oauth2_authcodeflow", "reinheit.apps.brew", "reinheit.apps.styles", "reinheit.apps.ingredients", @@ -127,3 +128,8 @@ STATICFILES_DIRS = [BASE_DIR / "reinheit" / "static"] # https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" + +AUTHENTICATION_BACKENDS = [ + "oauth2_authcodeflow.auth.AuthenticationBackend", + "django.contrib.auth.backends.ModelBackend", +] diff --git a/config/urls.py b/config/urls.py index 8a4ad6d..1b2174e 100644 --- a/config/urls.py +++ b/config/urls.py @@ -4,4 +4,5 @@ from django.contrib import admin urlpatterns = [ path("admin/", admin.site.urls), path("brews/", include(("reinheit.apps.brew.urls", "brew"), namespace="brews")), + path("oidc/", include("oauth2_authcodeflow.urls")), ] diff --git a/reinheit/apps/brew/admin.py b/reinheit/apps/brew/admin.py index 157c18e..c13bcb7 100644 --- a/reinheit/apps/brew/admin.py +++ b/reinheit/apps/brew/admin.py @@ -27,7 +27,12 @@ class YeastAdditionInline(admin.TabularInline): @admin.register(Brew) class BrewAdmin(admin.ModelAdmin): - inlines = [MaltAdditionInline, FermentableAdditionInline, ChemicalAdditionInline, YeastAdditionInline] + inlines = [ + MaltAdditionInline, + FermentableAdditionInline, + ChemicalAdditionInline, + YeastAdditionInline, + ] list_display = ["name", "style", "pitch_date"] date_hierarchy = "pitch_date" diff --git a/reinheit/apps/brew/migrations/0005_fermentableaddition_maltaddition_yeastaddition_and_more.py b/reinheit/apps/brew/migrations/0005_fermentableaddition_maltaddition_yeastaddition_and_more.py index 181d63f..9180ead 100644 --- a/reinheit/apps/brew/migrations/0005_fermentableaddition_maltaddition_yeastaddition_and_more.py +++ b/reinheit/apps/brew/migrations/0005_fermentableaddition_maltaddition_yeastaddition_and_more.py @@ -92,9 +92,7 @@ class Migration(migrations.Migration): ("added", models.DateTimeField(null=True)), ( "brew", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, to="brew.brew" - ), + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="brew.brew"), ), ], options={ diff --git a/reinheit/apps/brew/migrations/0006_chemicaladdition_ingredient_fermentableaddition_brew_and_more.py b/reinheit/apps/brew/migrations/0006_chemicaladdition_ingredient_fermentableaddition_brew_and_more.py index 436f6c8..66e167a 100644 --- a/reinheit/apps/brew/migrations/0006_chemicaladdition_ingredient_fermentableaddition_brew_and_more.py +++ b/reinheit/apps/brew/migrations/0006_chemicaladdition_ingredient_fermentableaddition_brew_and_more.py @@ -22,9 +22,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name="fermentableaddition", name="brew", - field=models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, to="brew.brew" - ), + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="brew.brew"), ), migrations.AddField( model_name="fermentableaddition", @@ -37,9 +35,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name="maltaddition", name="brew", - field=models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, to="brew.brew" - ), + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="brew.brew"), ), migrations.AddField( model_name="maltaddition", @@ -52,9 +48,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name="yeastaddition", name="brew", - field=models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, to="brew.brew" - ), + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="brew.brew"), ), migrations.AddField( model_name="yeastaddition", diff --git a/requirements/base.in b/requirements/base.in index c250a95..f0f233e 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -1,3 +1,4 @@ django django-bootstrap5 djlint +django-oauth2-authcodeflow diff --git a/requirements/base.txt b/requirements/base.txt index 8764152..27013ef 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,21 +1,34 @@ # This file was autogenerated by uv via the following command: -# uv pip compile requirements/base.in +# uv pip compile ./requirements/base.in asgiref==3.8.1 # via django +certifi==2024.6.2 + # via requests +cffi==1.16.0 + # via cryptography +charset-normalizer==3.3.2 + # via requests click==8.1.7 # via djlint colorama==0.4.6 # via djlint +cryptography==42.0.8 + # via python-jose cssbeautifier==1.15.1 # via djlint django==5.0.6 # via - # -r requirements/base.in + # -r ./requirements/base.in # django-bootstrap5 + # django-oauth2-authcodeflow django-bootstrap5==24.2 - # via -r requirements/base.in + # via -r ./requirements/base.in +django-oauth2-authcodeflow==1.1.0 + # via -r ./requirements/base.in djlint==1.34.1 - # via -r requirements/base.in + # via -r ./requirements/base.in +ecdsa==0.19.0 + # via python-jose editorconfig==0.12.4 # via # cssbeautifier @@ -24,6 +37,8 @@ html-tag-names==0.1.2 # via djlint html-void-elements==0.1.0 # via djlint +idna==3.7 + # via requests jsbeautifier==1.15.1 # via # cssbeautifier @@ -32,15 +47,30 @@ json5==0.9.25 # via djlint pathspec==0.12.1 # via djlint +pyasn1==0.6.0 + # via + # python-jose + # rsa +pycparser==2.22 + # via cffi +python-jose==3.3.0 + # via django-oauth2-authcodeflow pyyaml==6.0.1 # via djlint regex==2023.12.25 # via djlint +requests==2.32.3 + # via django-oauth2-authcodeflow +rsa==4.9 + # via python-jose six==1.16.0 # via # cssbeautifier + # ecdsa # jsbeautifier sqlparse==0.5.0 # via django tqdm==4.66.4 # via djlint +urllib3==2.2.2 + # via requests diff --git a/run_bjoern.py b/run_bjoern.py index 755246c..48cb71e 100755 --- a/run_bjoern.py +++ b/run_bjoern.py @@ -7,7 +7,7 @@ import traceback from django.core.wsgi import get_wsgi_application -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.production') +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.production") app = get_wsgi_application() NUM_WORKERS = 1