Files
Timothy Jaeryang Baek 6f2fc7bc7a refac
2026-11-10 21:18:18 +09:00

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