mirror of
https://github.com/open-webui/open-webui.git
synced 2026-11-15 18:55:07 +03:00
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
from fastapi import HTTPException
|
|
from open_webui.utils.auth import create_token, decode_token, get_verified_user_by_id
|
|
|
|
|
|
def create_browser_token(server_id, user_id, chat_id, session, headers=None, cookies=None, *, resource='browser'):
|
|
from open_webui.utils.oauth import encrypt_data
|
|
|
|
relay = encrypt_data(
|
|
{
|
|
'authorization': (headers or {}).get('Authorization'),
|
|
'cookies': cookies or {},
|
|
}
|
|
)
|
|
return create_token(
|
|
{
|
|
'purpose': 'terminal-browser',
|
|
'server': server_id,
|
|
'user': user_id,
|
|
'chat': chat_id,
|
|
'session': session['id'],
|
|
'resource': resource,
|
|
'model': (headers or {}).get('X-Terminal-Model-Id'),
|
|
'capability': session['token'],
|
|
'relay': relay,
|
|
},
|
|
)
|
|
|
|
|
|
async def browser_access(server_id, sid, browser_token):
|
|
data = decode_token(browser_token)
|
|
if (
|
|
not data
|
|
or data.get('purpose') != 'terminal-browser'
|
|
or data.get('server') != server_id
|
|
or data.get('session') != sid
|
|
):
|
|
raise HTTPException(401, 'Browser session expired')
|
|
user = await get_verified_user_by_id(data.get('user'))
|
|
if user is None:
|
|
raise HTTPException(401, 'Browser session expired')
|
|
from open_webui.utils.oauth import decrypt_data
|
|
|
|
data['relay'] = decrypt_data(data['relay'])
|
|
return user, data
|