15 lines
675 B
Python
15 lines
675 B
Python
from app.core.contracts import AgentDefinition, RequestContext
|
|
from app.core.errors import ForbiddenAgentError
|
|
|
|
|
|
class AgentAuthorizer:
|
|
@staticmethod
|
|
def ensure_allowed(definition: AgentDefinition, context: RequestContext) -> None:
|
|
if not set(definition.allowed_roles).intersection(context.roles):
|
|
raise ForbiddenAgentError("当前角色不能使用此 Agent")
|
|
if context.portal not in definition.allowed_portals:
|
|
raise ForbiddenAgentError("当前入口不能使用此 Agent")
|
|
permission = "agent:run"
|
|
if permission not in context.permissions:
|
|
raise ForbiddenAgentError("缺少 Agent 运行权限")
|