Add local login flag

This commit is contained in:
Christian Cueni 2022-04-11 09:42:30 +02:00
parent 29258c4348
commit 32182fab27
4 changed files with 10 additions and 6 deletions

View File

@ -110,7 +110,9 @@ AUTH_USER_MODEL = "core.User"
# https://docs.djangoproject.com/en/dev/ref/settings/#login-redirect-url # https://docs.djangoproject.com/en/dev/ref/settings/#login-redirect-url
# LOGIN_REDIRECT_URL = "users:redirect" # LOGIN_REDIRECT_URL = "users:redirect"
# https://docs.djangoproject.com/en/dev/ref/settings/#login-url # https://docs.djangoproject.com/en/dev/ref/settings/#login-url
LOGIN_URL = "/login/" LOGIN_URL = "/sso/login/"
ALLOW_LOCAL_LOGIN = env.bool("VBV_ALLOW_LOCAL_LOGIN", default=False)
# PASSWORDS # PASSWORDS
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------

View File

@ -33,7 +33,6 @@ urlpatterns = [
path("", django_view_authentication_exempt(TemplateView.as_view(template_name="pages/home.html")), name="home"), path("", django_view_authentication_exempt(TemplateView.as_view(template_name="pages/home.html")), name="home"),
path('admin/raise_error/', user_passes_test(lambda u: u.is_superuser, login_url='/login/')(raise_example_error), ), path('admin/raise_error/', user_passes_test(lambda u: u.is_superuser, login_url='/login/')(raise_example_error), ),
path(settings.ADMIN_URL, admin.site.urls), path(settings.ADMIN_URL, admin.site.urls),
path("login/", django_view_authentication_exempt(auth_views.LoginView.as_view(template_name="core/login.html"))),
path("checkratelimit/", check_rate_limit), path("checkratelimit/", check_rate_limit),
path("todo/", include("vbv_lernwelt.simpletodo.urls")), path("todo/", include("vbv_lernwelt.simpletodo.urls")),
path("sso/", include("vbv_lernwelt.sso.urls")), path("sso/", include("vbv_lernwelt.sso.urls")),
@ -42,6 +41,11 @@ if settings.DEBUG:
# Static file serving when using Gunicorn + Uvicorn for local web socket development # Static file serving when using Gunicorn + Uvicorn for local web socket development
urlpatterns += staticfiles_urlpatterns() urlpatterns += staticfiles_urlpatterns()
if settings.ALLOW_LOCAL_LOGIN:
urlpatterns += [path("login/", django_view_authentication_exempt(
auth_views.LoginView.as_view(template_name="core/login.html"))),]
# API URLS # API URLS
urlpatterns += [ urlpatterns += [
# API base url # API base url

View File

@ -1,6 +1,4 @@
from django.urls import path from django.urls import path
from django.conf.urls import url, include
from rest_framework.routers import DefaultRouter
from . import views from . import views
from ..core.middleware.auth import django_view_authentication_exempt from ..core.middleware.auth import django_view_authentication_exempt

View File

@ -28,13 +28,13 @@ def authorize(request):
logger.warning(f'OAuth error: {e}') logger.warning(f'OAuth error: {e}')
if not settings.DEBUG: if not settings.DEBUG:
capture_exception(e) capture_exception(e)
return redirect(f'/{OAUTH_REDIRECT}?state=someerror') return redirect(f'/{OAUTH_REDIRECT}?state=someerror') # to be defined
user_data = _user_data_from_token_data(deocded_token) user_data = _user_data_from_token_data(deocded_token)
created = get_user_model().objects.create_or_update_by_email(user_data["email"], user_data["first_name"], created = get_user_model().objects.create_or_update_by_email(user_data["email"], user_data["first_name"],
user_data["last_name"], user_data["username"]) user_data["last_name"], user_data["username"])
return redirect(f'/{OAUTH_REDIRECT}?state=success') return redirect(f'/{OAUTH_REDIRECT}?state=success') # to be defined
def _user_data_from_token_data(token: dict) -> dict: def _user_data_from_token_data(token: dict) -> dict: