|
8 | 8 | from astrbot.core.astr_agent_context import AstrAgentContext |
9 | 9 |
|
10 | 10 | from ..computer_client import get_booter |
| 11 | +from .permissions import check_admin_permission |
11 | 12 |
|
12 | 13 |
|
13 | 14 | def _to_json(data: Any) -> str: |
14 | 15 | return json.dumps(data, ensure_ascii=False, default=str) |
15 | 16 |
|
16 | 17 |
|
17 | | -def _ensure_admin(context: ContextWrapper[AstrAgentContext]) -> str | None: |
18 | | - if context.context.event.role != "admin": |
19 | | - return ( |
20 | | - "error: Permission denied. Browser and skill lifecycle tools are only allowed " |
21 | | - "for admin users." |
22 | | - ) |
23 | | - return None |
24 | | - |
25 | | - |
26 | 18 | async def _get_browser_component(context: ContextWrapper[AstrAgentContext]) -> Any: |
27 | 19 | booter = await get_booter( |
28 | 20 | context.context.context, |
@@ -77,7 +69,7 @@ async def call( |
77 | 69 | learn: bool = False, |
78 | 70 | include_trace: bool = False, |
79 | 71 | ) -> ToolExecResult: |
80 | | - if err := _ensure_admin(context): |
| 72 | + if err := check_admin_permission(context, "Using browser tools"): |
81 | 73 | return err |
82 | 74 | try: |
83 | 75 | browser = await _get_browser_component(context) |
@@ -140,7 +132,7 @@ async def call( |
140 | 132 | learn: bool = False, |
141 | 133 | include_trace: bool = False, |
142 | 134 | ) -> ToolExecResult: |
143 | | - if err := _ensure_admin(context): |
| 135 | + if err := check_admin_permission(context, "Using browser tools"): |
144 | 136 | return err |
145 | 137 | try: |
146 | 138 | browser = await _get_browser_component(context) |
@@ -187,7 +179,7 @@ async def call( |
187 | 179 | description: str | None = None, |
188 | 180 | tags: str | None = None, |
189 | 181 | ) -> ToolExecResult: |
190 | | - if err := _ensure_admin(context): |
| 182 | + if err := check_admin_permission(context, "Using browser tools"): |
191 | 183 | return err |
192 | 184 | try: |
193 | 185 | browser = await _get_browser_component(context) |
|
0 commit comments