diff --git a/py/core/database/users.py b/py/core/database/users.py index 68e312bf9..0a977782f 100644 --- a/py/core/database/users.py +++ b/py/core/database/users.py @@ -251,6 +251,9 @@ async def create_user( google_id: Optional[str] = None, github_id: Optional[str] = None, is_superuser: bool = False, + name: Optional[str] = None, + bio: Optional[str] = None, + profile_picture: Optional[str] = None ) -> User: """Create a new user.""" # 1) Check if a user with this email already exists @@ -308,6 +311,9 @@ async def create_user( "google_id": google_id, "github_id": github_id, "is_verified": account_type != "password", + "name": name, + "bio": bio, + "profile_picture": profile_picture, } ) .returning( @@ -322,6 +328,9 @@ async def create_user( "collection_ids", "limits_overrides", "metadata", + "name", + "bio", + "profile_picture", ] ) .build() @@ -345,9 +354,9 @@ async def create_user( collection_ids=result["collection_ids"] or [], limits_overrides=json.loads(result["limits_overrides"] or "{}"), metadata=json.loads(result["metadata"] or "{}"), - name=None, - bio=None, - profile_picture=None, + name=result["name"], + bio=result["bio"], + profile_picture=result["profile_picture"], account_type=account_type, hashed_password=hashed_password, google_id=google_id, diff --git a/py/core/main/api/v3/users_router.py b/py/core/main/api/v3/users_router.py index f7337ead0..bf5b3c86a 100644 --- a/py/core/main/api/v3/users_router.py +++ b/py/core/main/api/v3/users_router.py @@ -147,15 +147,12 @@ def validate_password(password: str) -> bool: # ) registration_response = await self.services.auth.register( - email, password + email=email, + password=password, + name=name, + bio=bio, + profile_picture=profile_picture ) - if name or bio or profile_picture: - return await self.services.auth.update_user( - user_id=registration_response.id, - name=name, - bio=bio, - profile_picture=profile_picture, - ) return registration_response diff --git a/py/core/main/services/auth_service.py b/py/core/main/services/auth_service.py index 8930a711c..213916f11 100644 --- a/py/core/main/services/auth_service.py +++ b/py/core/main/services/auth_service.py @@ -35,8 +35,21 @@ def __init__( ) @telemetry_event("RegisterUser") - async def register(self, email: str, password: str) -> User: - return await self.providers.auth.register(email, password) + async def register( + self, + email: str, + password: str, + name: Optional[str] = None, + bio: Optional[str] = None, + profile_picture: Optional[str] = None, + ) -> User: + return await self.providers.auth.register( + email=email, + password=password, + name=name, + bio=bio, + profile_picture=profile_picture + ) @telemetry_event("SendVerificationEmail") async def send_verification_email( diff --git a/py/core/providers/auth/r2r_auth.py b/py/core/providers/auth/r2r_auth.py index b8daef517..f8fd0253f 100644 --- a/py/core/providers/auth/r2r_auth.py +++ b/py/core/providers/auth/r2r_auth.py @@ -203,6 +203,9 @@ async def register( account_type: str = "password", github_id: Optional[str] = None, google_id: Optional[str] = None, + name: Optional[str] = None, + bio: Optional[str] = None, + profile_picture: Optional[str] = None ) -> User: if account_type == "password": if not password: @@ -228,6 +231,9 @@ async def register( account_type=account_type, github_id=github_id, google_id=google_id, + name=name, + bio=bio, + profile_picture=profile_picture ) default_collection: CollectionResponse = ( await self.database_provider.collections_handler.create_collection( diff --git a/py/core/providers/auth/supabase.py b/py/core/providers/auth/supabase.py index ae07de038..d5c1e1d17 100644 --- a/py/core/providers/auth/supabase.py +++ b/py/core/providers/auth/supabase.py @@ -72,7 +72,14 @@ async def decode_token(self, token: str) -> TokenData: "decode_token is not used with Supabase authentication" ) - async def register(self, email: str, password: str) -> User: # type: ignore + async def register( + self, + email: str, + password: str, + name: Optional[str] = None, + bio: Optional[str] = None, + profile_picture: Optional[str] = None + ) -> User: # type: ignore # Use Supabase client to create a new user if user := self.supabase.auth.sign_up(email=email, password=password):