diff --git a/docs/release-notes/version-3.2.md b/docs/release-notes/version-3.2.md index 250082061..6ec077b8d 100644 --- a/docs/release-notes/version-3.2.md +++ b/docs/release-notes/version-3.2.md @@ -2,6 +2,10 @@ ## v3.2.7 (FUTURE) +### Enhancements + +* [#9741](https://github.com/netbox-community/netbox/issues/9741) - Check for UserConfig instance during user login + ### Bug Fixes * [#9715](https://github.com/netbox-community/netbox/issues/9715) - Fix `SOCIAL_AUTH_PIPELINE` config parameter not taking effect diff --git a/netbox/users/views.py b/netbox/users/views.py index 6a923e77e..344f375fc 100644 --- a/netbox/users/views.py +++ b/netbox/users/views.py @@ -20,7 +20,7 @@ from netbox.authentication import get_auth_backend_display from netbox.config import get_config from utilities.forms import ConfirmationForm from .forms import LoginForm, PasswordChangeForm, TokenForm, UserConfigForm -from .models import Token +from .models import Token, UserConfig # @@ -69,7 +69,13 @@ class LoginView(View): # Authenticate user auth_login(request, form.get_user()) logger.info(f"User {request.user} successfully authenticated") - messages.info(request, "Logged in as {}.".format(request.user)) + messages.info(request, f"Logged in as {request.user}.") + + # Ensure the user has a UserConfig defined. (This should normally be handled by + # create_userconfig() on user creation.) + if not hasattr(request.user, 'config'): + config = get_config() + UserConfig(user=request.user, data=config.DEFAULT_USER_PREFERENCES).save() return self.redirect_to_next(request, logger)