[FEAT] Enable django-allauth for enhanced user management & federation

This commit is contained in:
2023-02-24 19:42:07 +00:00
parent 05ca7433f1
commit 86e18c399d
58 changed files with 1248 additions and 30 deletions

View File

@@ -185,6 +185,7 @@ DJANGO_APPS = [
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
]
THIRD_PARTY_APPS = [
@@ -199,6 +200,12 @@ THIRD_PARTY_APPS = [
'bootstrap_datepicker_plus',
'hijack',
'pwa',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.microsoft',
'django_inlinecss',
]
FIRST_PARTY_APPS = [
@@ -219,6 +226,11 @@ MIDDLEWARE = [
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'hijack.middleware.HijackUserMiddleware',
'django.contrib.sites.middleware.CurrentSiteMiddleware',
]
FIXTURE_DIRS = [
BASE_DIR.joinpath('breccia_mapper', 'fixtures'),
]
ROOT_URLCONF = 'breccia_mapper.urls'
@@ -243,6 +255,33 @@ TEMPLATES = [
WSGI_APPLICATION = 'breccia_mapper.wsgi.application'
# allauth
AUTHENTICATION_BACKENDS = [
# Needed to login by username in Django admin, regardless of `allauth`
'django.contrib.auth.backends.ModelBackend',
# `allauth` specific authentication methods, such as login by email
'allauth.account.auth_backends.AuthenticationBackend',
]
SITE_ID = 1
ACCOUNT_DEFAULT_HTTP_PROTOCOL = SITE_PROTOCOL
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 1
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = "mandatory"
ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5
# 1 day
ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 86400
# or any other page
ACCOUNT_LOGOUT_REDIRECT_URL = '/'
ACCOUNT_ADAPTER = 'breccia_mapper.account_adapter.ControlSignupsAccountAdapter'
PROJECT_LONG_NAME = config('PROJECT_LONG_NAME', 'Project Network Mapper')
PROJECT_SHORT_NAME = config('PROJECT_SHORT_NAME', 'Network Mapper')
PROJECT_DESCRIPTION = config('PROJECT_DESCRIPTION', 'Application to map network relationships in the organisation.')
THEME_COLOR = '#' + config('THEME_COLOR', '212121')
BACKGROUND_COLOR = '#' + config('BACKGROUND_COLOR', 'ffffff')
# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
@@ -303,7 +342,7 @@ AUTH_USER_MODEL = 'people.User'
# Login flow
LOGIN_URL = reverse_lazy('login')
LOGIN_URL = reverse_lazy('account_login')
LOGIN_REDIRECT_URL = reverse_lazy('people:person.profile')
@@ -408,6 +447,15 @@ CONSTANCE_CONFIG = {
'PROJECT_TAGLINE': (
'Here is your project\'s tagline.',
'Project tagline'),
'ALLOW_SIGNUPS': (
False,
'Allow new users to sign up using the site\'s sign up form'),
'ENABLE_GOOGLE_LOGIN': (
False,
'Allow users to sign in using their Google accounts'),
'ENABLE_MICROSOFT_LOGIN': (
False,
'Allow users to sign in using their Microsoft accounts'),
'HOMEPAGE_HEADER_IMAGE': (
'800x500.png',
'Homepage header image',
@@ -459,6 +507,9 @@ CONSTANCE_CONFIG_FIELDSETS = {
'PARENT_PROJECT_NAME',
'PROJECT_LEAD',
'PROJECT_TAGLINE',
'ALLOW_SIGNUPS',
'ENABLE_GOOGLE_LOGIN',
'ENABLE_MICROSOFT_LOGIN',
),
'Homepage configuration': (
'HOMEPAGE_HEADER_IMAGE_SHRINK',
@@ -492,12 +543,6 @@ CONSTANCE_CONFIG_FIELDSETS = {
CONSTANCE_BACKEND = 'constance.backends.database.DatabaseBackend'
PROJECT_LONG_NAME = config('PROJECT_LONG_NAME', 'Project Network Mapper')
PROJECT_SHORT_NAME = config('PROJECT_SHORT_NAME', 'Network Mapper')
PROJECT_DESCRIPTION = config('PROJECT_DESCRIPTION', 'Application to map network relationships in the organisation.')
THEME_COLOR = '#' + config('THEME_COLOR', '212121')
BACKGROUND_COLOR = '#' + config('BACKGROUND_COLOR', 'ffffff')
# Django Hijack settings
# See https://django-hijack.readthedocs.io/en/stable/