logging & more robust login

This commit is contained in:
Tom Irgang 2023-04-25 20:47:53 +02:00
parent c061cad194
commit 523f82f2a9
3 changed files with 48 additions and 7 deletions

View file

@ -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,
},
}

View file

@ -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)

View file

@ -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)