Changeset - 64b4d93470bd
[Not reviewed]
0 4 2
Ben Sturmfels (bsturmfels) - 14 months ago 2023-04-19 14:00:00
ben@sturm.com.au
Add django-user-accounts app for use in place of SSO
6 files changed with 97 insertions and 2 deletions:
0 comments (0 inline, 0 general)
pinaxcon/devmode_settings.py
Show inline comments
 
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
 
AUTHENTICATION_BACKENDS = [
 
    'symposion.teams.backends.TeamPermissionsBackend',
 
    'django.contrib.auth.backends.ModelBackend',
 
]
 
LOGIN_URL='/accounts/login'
 

	
 
ROOT_URLCONF = "pinaxcon.devmode_urls"
 

	
 
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
 

	
 
INTERNAL_IPS = ['*']
pinaxcon/settings.py
Show inline comments
...
 
@@ -167,12 +167,13 @@ TEMPLATES = [
 
                "django.template.context_processors.media",
 
                "django.template.context_processors.static",
 
                "django.template.context_processors.tz",
 
                "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",
 
            ],
 
        },
 
    },
 
]
...
 
@@ -180,12 +181,14 @@ TEMPLATES = [
 
MIDDLEWARE = [
 
    "whitenoise.middleware.WhiteNoiseMiddleware",
 
    "django.contrib.sessions.middleware.SessionMiddleware",
 
    "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",
 
    "reversion.middleware.RevisionMiddleware",
 
    "waffle.middleware.WaffleMiddleware",
 
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
...
 
@@ -264,12 +267,14 @@ INSTALLED_APPS = [
 

	
 
    # testing and rollout
 
    "django_nose",
 
    "waffle",
 

	
 
    "crispy_forms",
 

	
 
    "account",
 
]
 

	
 
CRISPY_TEMPLATE_PACK = "bootstrap4"
 

	
 
DEBUG_TOOLBAR_PANELS = [
 
    'debug_toolbar.panels.versions.VersionsPanel',
...
 
@@ -353,13 +358,13 @@ FIXTURE_DIRS = [
 
AUTHENTICATION_BACKENDS = [
 
    'symposion.teams.backends.TeamPermissionsBackend',
 
    'django.contrib.auth.backends.ModelBackend',
 
    'djangosaml2.backends.Saml2Backend',
 
]
 

	
 
LOGIN_URL = '/saml2/login/'
 
LOGIN_URL = '/account/login/'
 
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
 

	
 
CONFERENCE_ID = 2
 
PROPOSAL_FORMS = {
 
    "talk": "pinaxcon.proposals.forms.TalkProposalForm",
 
    "tutorial": "pinaxcon.proposals.forms.TutorialProposalForm",
...
 
@@ -579,6 +584,10 @@ SPEAKERS_DINNER_ADULT = SpeakersDinnerCat.create(
 

	
 
# Venueless integration
 
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/'
pinaxcon/templates/account/login.html
Show inline comments
 
new file 100644
 
{% extends "site_base.html" %}
 

	
 
{% load account_tags %}
 
{% load i18n %}
 
{% load bootstrap %}
 

	
 
{% block head_title %}{% trans "Log in" %}{% endblock %}
 

	
 
{% block content %}
 
    <div class="row">
 
        <div class="col-md-4">
 
            <form method="POST" action="{% url "account_login" %}" autocapitalize="off" {% if form.is_multipart %} enctype="multipart/form-data"{% endif %}>
 
                <legend>{% trans "Log in to an existing account" %}</legend>
 
                {% csrf_token %}
 
                {{ form|bootstrap }}
 
                {% if redirect_field_value %}
 
                    <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
 
                {% endif %}
 
                <button type="submit" class="btn btn-primary">{% trans "Log in" %}</button>
 
                <a href="{% url "account_password_reset" %}" class="btn btn-link">{% trans "Forgot your password?" %}</a>
 
            </form>
 
            {% if ACCOUNT_OPEN_SIGNUP %}
 
                <p class="login-signup">
 
                    <small>
 
                        {% trans "Don't have an account?" %}  <strong><a href="{% urlnext 'account_signup' %}">{% trans "Sign up" %}</a></strong>
 
                    </small>
 
                </p>
 
            {% endif %}
 
        </div>
 
        <div class="col-md-4">
 
            {% include "account/_login_sidebar.html" %}
 
        </div>
 
    </div>
 
{% endblock %}
 

	
 
{% block scripts %}
 
    {{ block.super }}
 
    <script type="text/javascript">
 
        $(document).ready(function() {
 
            $('#id_username').focus();
 
        });
 
    </script>
 
{% endblock %}
pinaxcon/templates/account/signup.html
Show inline comments
 
new file 100644
 
{% 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 %}
 
    <div class="row">
 
        <div class="col-md-4">
 
            <form id="signup_form" method="post" action="{% url "account_signup" %}" autocapitalize="off" {% if form.is_multipart %} enctype="multipart/form-data"{% endif %}>
 
                {% csrf_token %}
 
                {{ form|bootstrap }}
 
                {% if redirect_field_value %}
 
                    <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
 
                {% endif %}
 
                <button type="submit" class="btn btn-primary">{% trans "Sign up" %}</button>
 
            </form>
 
            <p class="login-signup">
 
                <small>
 
                    {% trans "Already have an account?" %}  <strong><a href="{% urlnext 'account_login' %}">{% trans "Log in" %}</a></strong>
 
                </small>
 
            </p>
 
        </div>
 
        <div class="col-md-4">
 
            {% include "account/_signup_sidebar.html" %}
 
        </div>
 
    </div>
 
{% endblock %} <!-- block content -->
 

	
 
{% block scripts_extra %}
 
    <script type="text/javascript">
 
        $(document).ready(function() {
 
            $('#id_username').focus();
 
        });
 
    </script>
 
{% endblock %}
pinaxcon/urls.py
Show inline comments
...
 
@@ -21,12 +21,14 @@ urlpatterns = [
 
    path("schedule/", include("symposion.schedule.urls")),
 
    path("conference/", include("symposion.conference.urls")),
 

	
 
    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')),
 
    path('nested_admin/', include('nested_admin.urls')),
 
    path('checkin/', include('regidesk.urls')),
 
    path('pages/', include('django.contrib.flatpages.urls')),
requirements.txt
Show inline comments
...
 
@@ -47,6 +47,7 @@ stripe==2.55.0
 
# SASS Compiler and template tags
 
libsass==0.20.1
 
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
0 comments (0 inline, 0 general)