mirror of
https://github.com/open-webui/open-webui.git
synced 2026-06-14 03:30:25 +00:00
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
from urllib.parse import quote
|
|
|
|
from open_webui.env import (
|
|
FORWARD_USER_INFO_HEADER_USER_EMAIL,
|
|
FORWARD_USER_INFO_HEADER_USER_ID,
|
|
FORWARD_USER_INFO_HEADER_USER_NAME,
|
|
FORWARD_USER_INFO_HEADER_USER_ROLE,
|
|
)
|
|
|
|
|
|
def include_user_info_headers(headers, user):
|
|
return {
|
|
**headers,
|
|
FORWARD_USER_INFO_HEADER_USER_NAME: quote(user.name, safe=' '),
|
|
FORWARD_USER_INFO_HEADER_USER_ID: user.id,
|
|
FORWARD_USER_INFO_HEADER_USER_EMAIL: user.email,
|
|
FORWARD_USER_INFO_HEADER_USER_ROLE: user.role,
|
|
}
|
|
|
|
|
|
def get_custom_headers(custom_headers: dict, user=None, metadata: dict = None) -> dict:
|
|
if not custom_headers or not isinstance(custom_headers, dict):
|
|
return {}
|
|
|
|
metadata = metadata or {}
|
|
template_vars = {
|
|
'{{CHAT_ID}}': metadata.get('chat_id', '') or '',
|
|
'{{MESSAGE_ID}}': metadata.get('message_id', '') or '',
|
|
'{{USER_ID}}': (user.id if user else '') or '',
|
|
'{{USER_NAME}}': (user.name if user else '') or '',
|
|
'{{USER_EMAIL}}': (user.email if user else '') or '',
|
|
'{{USER_ROLE}}': (user.role if user else '') or '',
|
|
}
|
|
|
|
parsed_headers = {}
|
|
for key, value in custom_headers.items():
|
|
if not isinstance(value, str):
|
|
value = str(value)
|
|
for token, val in template_vars.items():
|
|
value = value.replace(token, val)
|
|
parsed_headers[key] = value
|
|
|
|
return parsed_headers
|
|
|