logging & more robust login
This commit is contained in:
parent
c061cad194
commit
523f82f2a9
3 changed files with 48 additions and 7 deletions
|
|
@ -185,3 +185,22 @@ if DEBUG:
|
||||||
else:
|
else:
|
||||||
LOGIN_REDIRECT_URL = "https://anmeldung.repaircafe-hilpoltstein.de/"
|
LOGIN_REDIRECT_URL = "https://anmeldung.repaircafe-hilpoltstein.de/"
|
||||||
LOGOUT_REDIRECT_URL = "https://anmeldung.repaircafe-hilpoltstein.de/"
|
LOGOUT_REDIRECT_URL = "https://anmeldung.repaircafe-hilpoltstein.de/"
|
||||||
|
|
||||||
|
|
||||||
|
LOG_LEVEL = "INFO"
|
||||||
|
if DEBUG:
|
||||||
|
LOG_LEVEL = "DEBUG"
|
||||||
|
|
||||||
|
LOGGING = {
|
||||||
|
"version": 1,
|
||||||
|
"disable_existing_loggers": False,
|
||||||
|
"handlers": {
|
||||||
|
"console": {
|
||||||
|
"class": "logging.StreamHandler",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"handlers": ["console"],
|
||||||
|
"level": LOG_LEVEL,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,14 @@
|
||||||
Authentication backends for RepApp.
|
Authentication backends for RepApp.
|
||||||
"""
|
"""
|
||||||
import unicodedata
|
import unicodedata
|
||||||
|
import logging
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.contrib.auth.backends import ModelBackend
|
from django.contrib.auth.backends import ModelBackend
|
||||||
from mozilla_django_oidc.auth import OIDCAuthenticationBackend
|
from mozilla_django_oidc.auth import OIDCAuthenticationBackend
|
||||||
from .models import OneTimeLogin, Organisator, Reparateur
|
from .models import OneTimeLogin, Organisator, Reparateur
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def generate_username(email):
|
def generate_username(email):
|
||||||
# Using Python 3 and Django 1.11+, usernames can contain alphanumeric
|
# Using Python 3 and Django 1.11+, usernames can contain alphanumeric
|
||||||
|
|
@ -71,19 +74,31 @@ class KeycloakOIDCAB(OIDCAuthenticationBackend):
|
||||||
|
|
||||||
def create_user(self, claims):
|
def create_user(self, claims):
|
||||||
user = super(KeycloakOIDCAB, self).create_user(claims)
|
user = super(KeycloakOIDCAB, self).create_user(claims)
|
||||||
|
logger.debug(f'Create user {user.email}')
|
||||||
|
|
||||||
|
try:
|
||||||
user.username = claims.get(
|
user.username = claims.get(
|
||||||
'preferred_username', generate_username(user.email))
|
'preferred_username', generate_username(user.email))
|
||||||
user.save()
|
user.save()
|
||||||
|
except Exception as exception:
|
||||||
|
logger.error(exception)
|
||||||
|
user.username = generate_username(user.email)
|
||||||
|
user.save()
|
||||||
|
|
||||||
|
logger.debug(f'Updated username {user.username}')
|
||||||
|
|
||||||
create_repapp_user(user)
|
create_repapp_user(user)
|
||||||
|
|
||||||
return user
|
return user
|
||||||
|
|
||||||
def update_user(self, user, claims):
|
def update_user(self, user, claims):
|
||||||
|
logger.debug(f'Update user {user.email} ({user.username})')
|
||||||
|
try:
|
||||||
user.username = claims.get(
|
user.username = claims.get(
|
||||||
'preferred_username', generate_username(user.email))
|
'preferred_username', generate_username(user.email))
|
||||||
user.save()
|
user.save()
|
||||||
|
except Exception as exception:
|
||||||
|
logger.error(exception)
|
||||||
|
|
||||||
create_repapp_user(user)
|
create_repapp_user(user)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -271,8 +271,15 @@ class RegisterGuestFormView(generic.edit.FormView):
|
||||||
if not CustomUser.objects.filter(email=mail).exists():
|
if not CustomUser.objects.filter(email=mail).exists():
|
||||||
password = ''.join(random.choice(string.ascii_letters)
|
password = ''.join(random.choice(string.ascii_letters)
|
||||||
for i in range(10))
|
for i in range(10))
|
||||||
|
|
||||||
|
username = name
|
||||||
|
i = 1
|
||||||
|
while CustomUser.objects.filter(username=username).first():
|
||||||
|
username = f'{name}{i}'
|
||||||
|
i = i + 1
|
||||||
|
|
||||||
user = CustomUser.objects.create_user(
|
user = CustomUser.objects.create_user(
|
||||||
username=name,
|
username=username,
|
||||||
email=mail,
|
email=mail,
|
||||||
)
|
)
|
||||||
user.set_password(password)
|
user.set_password(password)
|
||||||
|
|
|
||||||
Reference in a new issue