支持master key
This commit is contained in:
parent
a05da928f0
commit
36f2a5b87a
@ -18,7 +18,7 @@ from pydantic import BaseModel
|
|||||||
from agent.db_pool_manager import get_db_pool_manager
|
from agent.db_pool_manager import get_db_pool_manager
|
||||||
from utils.fastapi_utils import extract_api_key_from_auth
|
from utils.fastapi_utils import extract_api_key_from_auth
|
||||||
from utils.new_api_proxy import get_new_api_proxy
|
from utils.new_api_proxy import get_new_api_proxy
|
||||||
from utils.settings import SINGLE_AGENT_MODE, TEMPLATE_BOT_ID, TEMPLATE_BOT_NAME
|
from utils.settings import SINGLE_AGENT_MODE, TEMPLATE_BOT_ID, TEMPLATE_BOT_NAME, MASTERKEY
|
||||||
|
|
||||||
logger = logging.getLogger('app')
|
logger = logging.getLogger('app')
|
||||||
|
|
||||||
@ -229,6 +229,10 @@ async def verify_user_auth(authorization: Optional[str]) -> tuple[bool, Optional
|
|||||||
"""
|
"""
|
||||||
验证用户认证
|
验证用户认证
|
||||||
|
|
||||||
|
支持两种认证方式:
|
||||||
|
1. MASTERKEY - 使用 settings.MASTERKEY 进行鉴权,视为超级管理员
|
||||||
|
2. 用户 Token - 从数据库验证用户 token
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
authorization: Authorization header 值
|
authorization: Authorization header 值
|
||||||
|
|
||||||
@ -239,6 +243,10 @@ async def verify_user_auth(authorization: Optional[str]) -> tuple[bool, Optional
|
|||||||
if not provided_token:
|
if not provided_token:
|
||||||
return False, None, None
|
return False, None, None
|
||||||
|
|
||||||
|
# 检查是否为 masterkey
|
||||||
|
if MASTERKEY and provided_token == MASTERKEY:
|
||||||
|
return True, "__masterkey__", "masterkey"
|
||||||
|
|
||||||
pool = get_db_pool_manager().pool
|
pool = get_db_pool_manager().pool
|
||||||
|
|
||||||
async with pool.connection() as conn:
|
async with pool.connection() as conn:
|
||||||
@ -290,6 +298,10 @@ async def is_admin_user(authorization: Optional[str]) -> bool:
|
|||||||
if not user_valid or not user_id:
|
if not user_valid or not user_id:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
# masterkey 用户视为管理员
|
||||||
|
if user_id == "__masterkey__":
|
||||||
|
return True
|
||||||
|
|
||||||
pool = get_db_pool_manager().pool
|
pool = get_db_pool_manager().pool
|
||||||
async with pool.connection() as conn:
|
async with pool.connection() as conn:
|
||||||
async with conn.cursor() as cursor:
|
async with conn.cursor() as cursor:
|
||||||
|
|||||||
@ -431,7 +431,7 @@ def _extract_skills_to_robot(bot_id: str, skills: List[str], project_path: Path)
|
|||||||
|
|
||||||
_COMMON_ENV_KEYS = frozenset({
|
_COMMON_ENV_KEYS = frozenset({
|
||||||
'TMPDIR', 'PATH', 'HOME', 'USER', 'SHELL', 'LANG', 'TERM',
|
'TMPDIR', 'PATH', 'HOME', 'USER', 'SHELL', 'LANG', 'TERM',
|
||||||
'PWD', 'OLDPWD', 'NODE_ENV',
|
'PWD', 'OLDPWD', 'NODE_ENV', 'MASTERKEY', 'ASSISTANT_ID', 'USER_IDENTIFIER' , 'TRACE_ID'
|
||||||
})
|
})
|
||||||
|
|
||||||
_ENV_PATTERNS = [
|
_ENV_PATTERNS = [
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user