mirror of
https://github.com/open-webui/open-webui.git
synced 2026-08-13 01:02:25 -06:00
refac
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user