Skip to content

Commit 2c37dae

Browse files
committed
refac
1 parent 8e79b3d commit 2c37dae

8 files changed

Lines changed: 42 additions & 16 deletions

File tree

backend/open_webui/env.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,13 @@ def parse_section(section):
195195
)
196196

197197
# Header names for user info forwarding (customizable via environment variables)
198-
FORWARD_USER_INFO_HEADER_NAME = os.environ.get("FORWARD_USER_INFO_HEADER_NAME", "X-OpenWebUI-User-Name")
199-
FORWARD_USER_INFO_HEADER_ID = os.environ.get("FORWARD_USER_INFO_HEADER_ID", "X-OpenWebUI-User-Id")
200-
FORWARD_USER_INFO_HEADER_EMAIL = os.environ.get("FORWARD_USER_INFO_HEADER_EMAIL", "X-OpenWebUI-User-Email")
201-
FORWARD_USER_INFO_HEADER_ROLE = os.environ.get("FORWARD_USER_INFO_HEADER_ROLE", "X-OpenWebUI-User-Role")
198+
FORWARD_USER_INFO_HEADER_USER_NAME = os.environ.get("FORWARD_USER_INFO_HEADER_USER_NAME", "X-OpenWebUI-User-Name")
199+
FORWARD_USER_INFO_HEADER_USER_ID = os.environ.get("FORWARD_USER_INFO_HEADER_USER_ID", "X-OpenWebUI-User-Id")
200+
FORWARD_USER_INFO_HEADER_USER_EMAIL = os.environ.get("FORWARD_USER_INFO_HEADER_USER_EMAIL", "X-OpenWebUI-User-Email")
201+
FORWARD_USER_INFO_HEADER_USER_ROLE = os.environ.get("FORWARD_USER_INFO_HEADER_USER_ROLE", "X-OpenWebUI-User-Role")
202+
203+
# Header name for chat ID forwarding (customizable via environment variable)
204+
FORWARD_SESSION_INFO_HEADER_CHAT_ID = os.environ.get("FORWARD_SESSION_INFO_HEADER_CHAT_ID", "X-OpenWebUI-Chat-Id")
202205

203206
# Experimental feature, may be removed in future
204207
ENABLE_STAR_SESSIONS_MIDDLEWARE = (

backend/open_webui/retrieval/web/external.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
from open_webui.retrieval.web.main import SearchResult, get_filtered_results
1010
from open_webui.utils.headers import include_user_info_headers
11+
from open_webui.env import FORWARD_SESSION_INFO_HEADER_CHAT_ID
1112

1213

1314
log = logging.getLogger(__name__)
@@ -31,7 +32,7 @@ def search_external(
3132

3233
chat_id = getattr(request.state, "chat_id", None)
3334
if chat_id:
34-
headers["X-OpenWebUI-Chat-Id"] = str(chat_id)
35+
headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = str(chat_id)
3536

3637
response = requests.post(
3738
external_url,

backend/open_webui/retrieval/web/yandex.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
from open_webui.retrieval.web.main import SearchResult, get_filtered_results
1313
from open_webui.utils.headers import include_user_info_headers
14+
from open_webui.env import FORWARD_SESSION_INFO_HEADER_CHAT_ID
1415

1516
from xml.etree import ElementTree as ET
1617
from xml.etree.ElementTree import Element
@@ -50,7 +51,7 @@ def search_yandex(
5051

5152
chat_id = getattr(request.state, "chat_id", None)
5253
if chat_id:
53-
headers["X-OpenWebUI-Chat-Id"] = str(chat_id)
54+
headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = str(chat_id)
5455

5556
payload = {} if yandex_search_config == "" else json.loads(yandex_search_config)
5657

backend/open_webui/routers/ollama.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
from open_webui.env import (
2525
ENABLE_FORWARD_USER_INFO_HEADERS,
26+
FORWARD_SESSION_INFO_HEADER_CHAT_ID,
2627
)
2728

2829
from fastapi import (
@@ -137,7 +138,7 @@ async def send_post_request(
137138
if ENABLE_FORWARD_USER_INFO_HEADERS and user:
138139
headers = include_user_info_headers(headers, user)
139140
if metadata and metadata.get("chat_id"):
140-
headers["X-OpenWebUI-Chat-Id"] = metadata.get("chat_id")
141+
headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = metadata.get("chat_id")
141142

142143
r = await session.post(
143144
url,

backend/open_webui/routers/openai.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
AIOHTTP_CLIENT_TIMEOUT,
3434
AIOHTTP_CLIENT_TIMEOUT_MODEL_LIST,
3535
ENABLE_FORWARD_USER_INFO_HEADERS,
36+
FORWARD_SESSION_INFO_HEADER_CHAT_ID,
3637
BYPASS_MODEL_ACCESS_CONTROL,
3738
)
3839
from open_webui.models.users import UserModel
@@ -142,7 +143,7 @@ async def get_headers_and_cookies(
142143
if ENABLE_FORWARD_USER_INFO_HEADERS and user:
143144
headers = include_user_info_headers(headers, user)
144145
if metadata and metadata.get("chat_id"):
145-
headers["X-OpenWebUI-Chat-Id"] = metadata.get("chat_id")
146+
headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = metadata.get("chat_id")
146147

147148
token = None
148149
auth_type = config.get("auth_type")
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
from urllib.parse import quote
22

33
from open_webui.env import (
4-
FORWARD_USER_INFO_HEADER_NAME,
5-
FORWARD_USER_INFO_HEADER_ID,
6-
FORWARD_USER_INFO_HEADER_EMAIL,
7-
FORWARD_USER_INFO_HEADER_ROLE,
4+
FORWARD_USER_INFO_HEADER_USER_NAME,
5+
FORWARD_USER_INFO_HEADER_USER_ID,
6+
FORWARD_USER_INFO_HEADER_USER_EMAIL,
7+
FORWARD_USER_INFO_HEADER_USER_ROLE,
88
)
99

1010

1111
def include_user_info_headers(headers, user):
1212
return {
1313
**headers,
14-
FORWARD_USER_INFO_HEADER_NAME: quote(user.name, safe=" "),
15-
FORWARD_USER_INFO_HEADER_ID: user.id,
16-
FORWARD_USER_INFO_HEADER_EMAIL: user.email,
17-
FORWARD_USER_INFO_HEADER_ROLE: user.role,
14+
FORWARD_USER_INFO_HEADER_USER_NAME: quote(user.name, safe=" "),
15+
FORWARD_USER_INFO_HEADER_USER_ID: user.id,
16+
FORWARD_USER_INFO_HEADER_USER_EMAIL: user.email,
17+
FORWARD_USER_INFO_HEADER_USER_ROLE: user.role,
1818
}

backend/open_webui/utils/middleware.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,10 @@
127127
ENABLE_REALTIME_CHAT_SAVE,
128128
ENABLE_QUERIES_CACHE,
129129
RAG_SYSTEM_CONTEXT,
130+
ENABLE_FORWARD_USER_INFO_HEADERS,
131+
FORWARD_SESSION_INFO_HEADER_CHAT_ID,
130132
)
133+
from open_webui.utils.headers import include_user_info_headers
131134
from open_webui.constants import TASKS
132135

133136

@@ -2207,6 +2210,12 @@ async def process_chat_payload(request, form_data, user, metadata, model):
22072210
for key, value in connection_headers.items():
22082211
headers[key] = value
22092212

2213+
# Add user info headers if enabled
2214+
if ENABLE_FORWARD_USER_INFO_HEADERS and user:
2215+
headers = include_user_info_headers(headers, user)
2216+
if metadata and metadata.get("chat_id"):
2217+
headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = metadata.get("chat_id")
2218+
22102219
mcp_clients[server_id] = MCPClient()
22112220
await mcp_clients[server_id].connect(
22122221
url=mcp_server_connection.get("url", ""),

backend/open_webui/utils/tools.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,10 @@
4545
AIOHTTP_CLIENT_TIMEOUT,
4646
AIOHTTP_CLIENT_TIMEOUT_TOOL_SERVER_DATA,
4747
AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL,
48+
ENABLE_FORWARD_USER_INFO_HEADERS,
49+
FORWARD_SESSION_INFO_HEADER_CHAT_ID,
4850
)
51+
from open_webui.utils.headers import include_user_info_headers
4952
from open_webui.tools.builtin import (
5053
search_web,
5154
fetch_url,
@@ -335,6 +338,13 @@ async def get_tools(
335338
for key, value in connection_headers.items():
336339
headers[key] = value
337340

341+
# Add user info headers if enabled
342+
if ENABLE_FORWARD_USER_INFO_HEADERS and user:
343+
headers = include_user_info_headers(headers, user)
344+
metadata = extra_params.get("__metadata__", {})
345+
if metadata and metadata.get("chat_id"):
346+
headers[FORWARD_SESSION_INFO_HEADER_CHAT_ID] = metadata.get("chat_id")
347+
338348
def make_tool_function(
339349
function_name, tool_server_data, headers
340350
):

0 commit comments

Comments
 (0)