diff --git a/rc_hip/rc_hip/settings.py b/rc_hip/rc_hip/settings.py index 393dc44..5f216bf 100644 --- a/rc_hip/rc_hip/settings.py +++ b/rc_hip/rc_hip/settings.py @@ -185,3 +185,22 @@ if DEBUG: else: LOGIN_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, + }, +} diff --git a/rc_hip/repapp/backends.py b/rc_hip/repapp/backends.py index 130f735..ac8e454 100644 --- a/rc_hip/repapp/backends.py +++ b/rc_hip/repapp/backends.py @@ -2,11 +2,14 @@ Authentication backends for RepApp. """ import unicodedata +import logging from django.contrib.auth import get_user_model from django.contrib.auth.backends import ModelBackend from mozilla_django_oidc.auth import OIDCAuthenticationBackend from .models import OneTimeLogin, Organisator, Reparateur +logger = logging.getLogger(__name__) + def generate_username(email): # Using Python 3 and Django 1.11+, usernames can contain alphanumeric @@ -71,19 +74,31 @@ class KeycloakOIDCAB(OIDCAuthenticationBackend): def create_user(self, claims): user = super(KeycloakOIDCAB, self).create_user(claims) + logger.debug(f'Create user {user.email}') - user.username = claims.get( - 'preferred_username', generate_username(user.email)) - user.save() + try: + user.username = claims.get( + 'preferred_username', generate_username(user.email)) + 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) return user def update_user(self, user, claims): - user.username = claims.get( - 'preferred_username', generate_username(user.email)) - user.save() + logger.debug(f'Update user {user.email} ({user.username})') + try: + user.username = claims.get( + 'preferred_username', generate_username(user.email)) + user.save() + except Exception as exception: + logger.error(exception) create_repapp_user(user) diff --git a/rc_hip/repapp/views.py b/rc_hip/repapp/views.py index 5704c7f..4bc85f4 100644 --- a/rc_hip/repapp/views.py +++ b/rc_hip/repapp/views.py @@ -271,8 +271,15 @@ class RegisterGuestFormView(generic.edit.FormView): if not CustomUser.objects.filter(email=mail).exists(): password = ''.join(random.choice(string.ascii_letters) 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( - username=name, + username=username, email=mail, ) user.set_password(password)