From 64b4d93470bdbcc5fdf7123978e0531931ad3e9d 2023-04-19 14:00:00 From: Ben Sturmfels Date: 2023-04-19 14:00:00 Subject: [PATCH] Add django-user-accounts app for use in place of SSO --- diff --git a/pinaxcon/devmode_settings.py b/pinaxcon/devmode_settings.py index e417897311e95279cb3d89a76ea04146abbcda54..4560b44ee5820af9af2c47ecbbd5ca2903a16698 100644 --- a/pinaxcon/devmode_settings.py +++ b/pinaxcon/devmode_settings.py @@ -3,7 +3,6 @@ AUTHENTICATION_BACKENDS = [ 'symposion.teams.backends.TeamPermissionsBackend', 'django.contrib.auth.backends.ModelBackend', ] -LOGIN_URL='/accounts/login' ROOT_URLCONF = "pinaxcon.devmode_urls" diff --git a/pinaxcon/settings.py b/pinaxcon/settings.py index acd8c16a9c9091c0b50ac1d61c985cf7742f42f1..2388b514ce8546c825b771d3aea398a64105129b 100644 --- a/pinaxcon/settings.py +++ b/pinaxcon/settings.py @@ -170,6 +170,7 @@ TEMPLATES = [ "django.template.context_processors.request", "django.contrib.messages.context_processors.messages", "pinax_theme_bootstrap.context_processors.theme", + "account.context_processors.account", "symposion.reviews.context_processors.reviews", "django_settings_export.settings_export", ], @@ -183,6 +184,8 @@ MIDDLEWARE = [ "django.middleware.common.CommonMiddleware", "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", + "account.middleware.LocaleMiddleware", + "account.middleware.TimezoneMiddleware", "djangosaml2.middleware.SamlSessionMiddleware", "django.contrib.messages.middleware.MessageMiddleware", "debug_toolbar.middleware.DebugToolbarMiddleware", @@ -267,6 +270,8 @@ INSTALLED_APPS = [ "waffle", "crispy_forms", + + "account", ] CRISPY_TEMPLATE_PACK = "bootstrap4" @@ -356,7 +361,7 @@ AUTHENTICATION_BACKENDS = [ 'djangosaml2.backends.Saml2Backend', ] -LOGIN_URL = '/saml2/login/' +LOGIN_URL = '/account/login/' SESSION_EXPIRE_AT_BROWSER_CLOSE = True CONFERENCE_ID = 2 @@ -582,3 +587,7 @@ VENUELESS_URL = os.environ.get('VENUELESS_URL', None) VENUELESS_AUDIENCE = os.environ.get('VENUELESS_AUDIENCE', "venueless") VENUELESS_TOKEN_ISSUER = os.environ.get('VENUELESS_TOKEN_ISSUER', "any") VENUELESS_SECRET = os.environ.get('VENUELESS_SECRET', SECRET_KEY) + + +ACCOUNT_SIGNUP_REDIRECT_URL = '/dashboard/' +ACCOUNT_LOGIN_REDIRECT_URL = '/dashboard/' diff --git a/pinaxcon/templates/account/login.html b/pinaxcon/templates/account/login.html new file mode 100644 index 0000000000000000000000000000000000000000..cfe68d1ab2b0ae8719db16f705436794397aa83e --- /dev/null +++ b/pinaxcon/templates/account/login.html @@ -0,0 +1,43 @@ +{% extends "site_base.html" %} + +{% load account_tags %} +{% load i18n %} +{% load bootstrap %} + +{% block head_title %}{% trans "Log in" %}{% endblock %} + +{% block content %} +
+
+
+ {% trans "Log in to an existing account" %} + {% csrf_token %} + {{ form|bootstrap }} + {% if redirect_field_value %} + + {% endif %} + + {% trans "Forgot your password?" %} +
+ {% if ACCOUNT_OPEN_SIGNUP %} + + {% endif %} +
+
+ {% include "account/_login_sidebar.html" %} +
+
+{% endblock %} + +{% block scripts %} + {{ block.super }} + +{% endblock %} diff --git a/pinaxcon/templates/account/signup.html b/pinaxcon/templates/account/signup.html new file mode 100644 index 0000000000000000000000000000000000000000..1b4f7310195bf729016a83ed7ec404705d99329f --- /dev/null +++ b/pinaxcon/templates/account/signup.html @@ -0,0 +1,41 @@ +{% extends "site_base.html" %} +{% load account_tags %} +{% load i18n %} +{% load bootstrap %} + +{% block head_title %}Sign up{% endblock %} +{% block page_title %}Sign up{% endblock %} + +{% block alert %} +{% endblock %} + +{% block content %} +
+
+
+ {% csrf_token %} + {{ form|bootstrap }} + {% if redirect_field_value %} + + {% endif %} + +
+ +
+
+ {% include "account/_signup_sidebar.html" %} +
+
+{% endblock %} + +{% block scripts_extra %} + +{% endblock %} diff --git a/pinaxcon/urls.py b/pinaxcon/urls.py index 4818128bda012ed37b15cf9cd44b88ec8beeb24f..4eb7c2ef1956ccae08d3132b3bd887796048f6e5 100644 --- a/pinaxcon/urls.py +++ b/pinaxcon/urls.py @@ -24,6 +24,8 @@ urlpatterns = [ path("teams/", include("symposion.teams.urls")), path('raffle/', include("pinaxcon.raffle.urls")), + path("account/", include("account.urls")), + # Required by registrasion path('tickets/payments/', include('registripe.urls')), path('tickets/', include('registrasion.urls')), diff --git a/requirements.txt b/requirements.txt index 9d7e5c36aafec39fac4115569e9f0b9e289cb063..c7c7a17c1c022ee3cd071ee0282457219c47322e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -50,3 +50,4 @@ django-sass-processor==0.8.2 django-compressor==2.4 django-crispy-forms==1.9.2 +django-user-accounts==3.2.0 \ No newline at end of file