diff --git a/backend/open_webui/models/auths.py b/backend/open_webui/models/auths.py index 01ac873696..418d5c5479 100644 --- a/backend/open_webui/models/auths.py +++ b/backend/open_webui/models/auths.py @@ -3,13 +3,12 @@ from __future__ import annotations import logging -import time import uuid from typing import Optional import bcrypt from open_webui.internal.db import Base, JSONField, get_async_db_context -from open_webui.models.users import User, UserModel, UserProfileImageResponse, Users +from open_webui.models.users import UserModel, UserProfileImageResponse, Users from open_webui.utils.validate import validate_profile_image_url from pydantic import BaseModel, field_validator from sqlalchemy import Boolean, Column, String, Text, delete, select, update @@ -111,13 +110,12 @@ class AuthsTable: role: str = 'pending', oauth: dict | None = None, db: AsyncSession | None = None, - user_id: str | None = None, ) -> UserModel | None: """Create an Auth + User pair inside a single transaction.""" async with get_async_db_context(db) as session: log.info('insert_new_auth') - new_id = user_id or str(uuid.uuid4()) + new_id = str(uuid.uuid4()) credential = Auth( id=new_id, @@ -128,25 +126,15 @@ class AuthsTable: session.add(credential) try: - profile_image_url = validate_profile_image_url(profile_image_url) - except ValueError: - profile_image_url = '/user.png' - - now = int(time.time()) - created_user = UserModel( - id=new_id, - email=email, - name=name, - role=role, - profile_image_url=profile_image_url, - last_active_at=now, - created_at=now, - updated_at=now, - oauth=oauth, - ) - session.add(User(**created_user.model_dump())) - - try: + created_user = await Users.insert_new_user( + new_id, + name, + email, + profile_image_url, + role, + oauth=oauth, + db=session, + ) await session.commit() except IntegrityError: await session.rollback() diff --git a/backend/open_webui/routers/auths.py b/backend/open_webui/routers/auths.py index a5f4bca140..d9f6b022ba 100644 --- a/backend/open_webui/routers/auths.py +++ b/backend/open_webui/routers/auths.py @@ -2,8 +2,6 @@ from __future__ import annotations import asyncio import datetime -import hashlib -import hmac import logging import re import time @@ -38,7 +36,6 @@ from open_webui.env import ( WEBUI_AUTH_TRUSTED_GROUPS_HEADER, WEBUI_AUTH_TRUSTED_NAME_HEADER, WEBUI_AUTH_TRUSTED_ROLE_HEADER, - WEBUI_SECRET_KEY, ) from open_webui.internal.db import get_async_session from open_webui.models.auths import ( @@ -104,15 +101,6 @@ token_exchange_rate_limiter = ( ) -def trusted_header_user_id(email: str) -> str: - digest = hmac.digest( - WEBUI_SECRET_KEY.encode(), - f'open-webui:trusted-header:{email.lower()}'.encode(), - hashlib.sha256, - ) - return str(uuid.UUID(bytes=digest[:16], version=4)) - - ADMIN_CONFIG_KEYS = { 'SHOW_ADMIN_DETAILS': 'auth.admin.show', 'ADMIN_EMAIL': 'auth.admin.email', @@ -761,7 +749,6 @@ async def signin( name, db=db, source='trusted_header', - user_id=trusted_header_user_id(email), ) except IntegrityError: if not await Users.get_user_by_email(email.lower(), db=db): @@ -846,7 +833,6 @@ async def signup_handler( *, db: AsyncSession, source: str = 'api', - user_id: str | None = None, ) -> UserModel: """ Core user-creation logic shared by the signup endpoint and @@ -867,7 +853,6 @@ async def signup_handler( profile_image_url=profile_image_url, role=await Config.get('ui.default_user_role'), db=db, - user_id=user_id, ) if not user: raise HTTPException(500, detail=ERROR_MESSAGES.CREATE_USER_ERROR)