;rgb:0000/0000/0000

更新
This commit is contained in:
gr
2026-09-28 14:53:47 +08:00
parent 71304f356d
commit 3cdc812f2b
5 changed files with 15 additions and 9 deletions
@@ -28,7 +28,7 @@ class DesktopController extends BaseAdminController
if (empty($identity) || empty($identity['admin_id'])) {
return $this->fail('登录已失效,请重新登录');
}
// 桌面软件(7)和客服后台代登的手机控制台(8)都用这个接口换身份;
// 桌面软件(7)和客服后台代登的手机控制台(9)都用这个接口换身份;
// 返回真实终端,客服后台据此区分两种会话,桌面令牌不能冒充手机令牌。
$terminal = (int)($identity['terminal'] ?? 0);
if (!in_array($terminal, AdminTerminalEnum::wecomRpaTerminals(), true)) {
+3 -2
View File
@@ -27,9 +27,10 @@ class AdminTerminalEnum
const MOBILE = 2;
// 企业微信客服桌面软件。与网页端分开保存会话,桌面登录不会顶掉浏览器登录。
const WECOM_RPA = 7;
// 8 已被 AI 浏览器(app/mcp/service/ConsoleService::TERMINAL)占用,不要复用。
// 企业微信客服手机远程控制台。由客服后台服务端代为登录,单独保存会话,
// 手机登录既不会顶掉桌面软件(7),也不会和网页后台(1)互踢。
const WECOM_RPA_MOBILE = 8;
// 手机登录既不会顶掉桌面软件(7),也不会和网页后台(1)、AI 浏览器(8)互踢。
const WECOM_RPA_MOBILE = 9;
/**
* 可以调用 /adminapi/desktop/session 换取客服身份的终端。
@@ -1,4 +1,4 @@
-- 企业微信客服助手:手机远程控制台(终端 8)使用的菜单权限。
-- 企业微信客服助手:手机远程控制台(终端 9)使用的菜单权限。
--
-- 新增一个不在侧边栏显示的目录“企微客服助手”,下挂四个按钮权限。客服后台只读取
-- /adminapi/desktop/session 返回的 permissions 做校验,ZYT 这边没有对应页面。
@@ -15,9 +15,13 @@ function adminDesktopExpect(bool $condition, string $message): void
}
adminDesktopExpect(AdminTerminalEnum::WECOM_RPA === 7, 'desktop admin terminal remains 7');
adminDesktopExpect(AdminTerminalEnum::WECOM_RPA_MOBILE === 8, 'mobile console terminal is 8');
adminDesktopExpect(AdminTerminalEnum::WECOM_RPA_MOBILE === 9, 'mobile console terminal is 9');
adminDesktopExpect(
AdminTerminalEnum::wecomRpaTerminals() === [7, 8],
AdminTerminalEnum::WECOM_RPA_MOBILE !== \app\mcp\service\ConsoleService::TERMINAL,
'mobile console must not share the AI browser console terminal'
);
adminDesktopExpect(
AdminTerminalEnum::wecomRpaTerminals() === [7, 9],
'only the desktop and mobile console terminals may read the desktop session'
);
@@ -91,10 +91,11 @@ namespace {
Admin::$row['root'] = 0;
desktopCheck($result['data']['terminal'] === 7, 'desktop token reports the desktop terminal');
$mobile = $invoke(array_replace($valid, ['terminal' => 8]));
desktopCheck($mobile['code'] === 1, 'mobile console token (terminal 8) is accepted');
desktopCheck($mobile['data']['terminal'] === 8, 'mobile console token reports terminal 8');
$mobile = $invoke(array_replace($valid, ['terminal' => 9]));
desktopCheck($mobile['code'] === 1, 'mobile console token (terminal 9) is accepted');
desktopCheck($mobile['data']['terminal'] === 9, 'mobile console token reports terminal 9');
desktopCheck($mobile['data']['user_id'] === 'admin:9', 'mobile console maps to the same tenant identity');
desktopCheck($invoke(array_replace($valid, ['terminal' => 8]))['code'] === 0, 'AI browser console token rejected');
desktopCheck($invoke([])['code'] === 0, 'missing or expired cached identity rejected');
desktopCheck($invoke(array_replace($valid, ['terminal' => 1]))['code'] === 0, 'web token rejected');