This commit is contained in:
Jens
2026-07-24 22:46:37 +02:00
parent 0101660bd7
commit bdf44eec04
26 changed files with 1770 additions and 24 deletions
+22
View File
@@ -190,6 +190,28 @@ LOGIN_URL = "login"
LOGIN_REDIRECT_URL = "dashboard:today"
LOGOUT_REDIRECT_URL = "login"
# Inloggen kan met gebruikersnaam of e-mailadres. ModelBackend blijft als fallback.
AUTHENTICATION_BACKENDS = [
"apps.core.auth_backends.EmailOrUsernameModelBackend",
"django.contrib.auth.backends.ModelBackend",
]
PASSWORD_RESET_TIMEOUT = int(os.getenv("PASSWORD_RESET_TIMEOUT", str(3 * 24 * 3600)))
# Microsoft Entra ID (Azure AD) SSO. Uit tenzij expliciet geconfigureerd.
ENTRA_ID_ENABLED = env_bool("ENTRA_ID_ENABLED", False)
ENTRA_CLIENT_ID = os.getenv("ENTRA_CLIENT_ID", "")
ENTRA_CLIENT_SECRET = os.getenv("ENTRA_CLIENT_SECRET", "")
ENTRA_TENANT_ID = os.getenv("ENTRA_TENANT_ID", "")
ENTRA_REDIRECT_URI = os.getenv("ENTRA_REDIRECT_URI", "")
ENTRA_SCOPES = env_list("ENTRA_SCOPES", "User.Read")
ENTRA_ALLOWED_DOMAINS = env_list("ENTRA_ALLOWED_DOMAINS")
# Demo-toegang: logt in als afgeschermd gastaccount met een fictieve, gevulde
# demo-omgeving. Standaard aan zodat de knop 'Bekijk demo' zichtbaar is.
DEMO_MODE_ENABLED = env_bool("DEMO_MODE_ENABLED", True)
DEMO_USERNAME = os.getenv("DEMO_USERNAME", "demo")
DEMO_EMAIL = os.getenv("DEMO_EMAIL", "demo@vacatureradar.local")
EMAIL_BACKEND = os.getenv("EMAIL_BACKEND", "django.core.mail.backends.console.EmailBackend")
DEFAULT_FROM_EMAIL = os.getenv("DEFAULT_FROM_EMAIL", "VacatureRadar <vacatureradar@localhost>")
EMAIL_HOST = os.getenv("SMTP_HOST", "")
+31 -1
View File
@@ -8,7 +8,12 @@ from django.templatetags.static import static as static_url
from django.urls import include, path
from django.views.generic import RedirectView
from apps.core.views import SecurityAwareLoginView
from apps.core.views import (
SecurityAwareLoginView,
demo_login,
entra_callback,
entra_login,
)
urlpatterns = [
path(
@@ -23,6 +28,31 @@ urlpatterns = [
name="login",
),
path("logout/", auth_views.LogoutView.as_view(), name="logout"),
# Wachtwoordherstel (Django's ingebouwde flow, eigen templates).
path(
"wachtwoord/herstellen/",
auth_views.PasswordResetView.as_view(),
name="password_reset",
),
path(
"wachtwoord/herstellen/verzonden/",
auth_views.PasswordResetDoneView.as_view(),
name="password_reset_done",
),
path(
"wachtwoord/herstellen/<uidb64>/<token>/",
auth_views.PasswordResetConfirmView.as_view(),
name="password_reset_confirm",
),
path(
"wachtwoord/herstellen/klaar/",
auth_views.PasswordResetCompleteView.as_view(),
name="password_reset_complete",
),
# Entra ID SSO en demo-toegang.
path("auth/entra/login/", entra_login, name="entra-login"),
path("auth/entra/callback/", entra_callback, name="entra-callback"),
path("auth/demo/", demo_login, name="demo-login"),
path("", include(("apps.core.urls", "dashboard"), namespace="dashboard")),
path("jobs/", include(("apps.jobs.urls", "jobs"), namespace="jobs")),
path("profiles/", include(("apps.profiles.urls", "profiles"), namespace="profiles")),