From ba59b55a52f31f286123344b196d2181d92da872 Mon Sep 17 00:00:00 2001 From: Tommaso Comparin <3862206+tcompa@users.noreply.github.com> Date: Wed, 18 Sep 2024 16:58:50 +0200 Subject: [PATCH] Add empty-settings creation to `on_after_register` (ref #1776) --- fractal_server/app/security/__init__.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/fractal_server/app/security/__init__.py b/fractal_server/app/security/__init__.py index 87045e267..b37af50f6 100644 --- a/fractal_server/app/security/__init__.py +++ b/fractal_server/app/security/__init__.py @@ -54,6 +54,7 @@ from fractal_server.app.models import OAuthAccount from fractal_server.app.models import UserGroup from fractal_server.app.models import UserOAuth +from fractal_server.app.models import UserSettings from fractal_server.app.schemas.user import UserCreate from fractal_server.logger import set_logger @@ -193,6 +194,8 @@ async def validate_password(self, password: str, user: UserOAuth) -> None: async def on_after_register( self, user: UserOAuth, request: Optional[Request] = None ): + logger = set_logger("fractal_server.on_after_register") + logger.info( f"New-user registration completed ({user.id=}, {user.email=})." ) @@ -204,24 +207,30 @@ async def on_after_register( res = await db.execute(stm) default_group = res.scalar_one_or_none() if default_group is None: - logger.error( + logger.warning( f"No group found with name {FRACTAL_DEFAULT_GROUP_NAME}" ) else: - logger.warning( - f"START adding {user.email} user to group " - f"{default_group.id=}." - ) link = LinkUserGroup( user_id=user.id, group_id=default_group.id ) db.add(link) await db.commit() - logger.warning( - f"END adding {user.email} user to group " - f"{default_group.id=}." + logger.info( + f"Added {user.email} user to group {default_group.id=}." ) + this_user = await db.get(UserOAuth, user.id) + + this_user.settings = UserSettings() + await db.merge(this_user) + await db.commit() + await db.refresh(this_user) + logger.info( + f"Associated empty settings (id={this_user.user_settings_id}) " + f"to '{this_user.email}'." + ) + async def get_user_manager( user_db: SQLModelUserDatabaseAsync = Depends(get_user_db),