# login.html · 登录页 ## 用途与角色 系统唯一入口。企微 OAuth 静默授权,无本地账号密码。设计稿第 3.1/6 章。 ## 区块 | 区块 | 说明 | |---|---| | 品牌卡 | logo+系统名+「Tigo · 工作台」 | | 企微授权登录按钮 | 唯一主操作 | | 开发模式折叠块 | `DEV_MODE=1` 时才显示;交付后关闭 | ## 行为契约 1. 点击「企业微信授权登录」→ `GET /auth/wecom/start` → 302 企微授权页(snsapi_base、state 随机防 CSRF)。 2. 企微回跳 `GET /auth/wecom/callback?code=&state=` → 后端换 userid → 查 `tigo_workbench.users` 岗位映射: - 命中:签 JWT(12h),302 到 `/`(HUB)。 - 未命中:落「待映射」页(提示联系管理员),不签发 JWT。 3. state 校验失败 / code 过期(5 分钟):回登录页并提示重试。 4. 开发模式:`POST /auth/dev/login {userid, role}` 仅 `DEV_MODE=1` 时开放,日志审计留痕。 ## 接口草案(tigo-workbench 侧) - `GET /auth/wecom/start` / `GET /auth/wecom/callback` - `GET /auth/me` → `{userid, name, roles[]}`;`POST /auth/logout` ## 边界与空态 - 非企微浏览器打开(无 OAuth 环境):提示「请在企业微信中打开」,提供扫码进工作台的引导文案。 - 用户被禁用/移出可见范围:403 页面,提示联系管理员。 ## 验收要点 - 企微内点开即登录成功,全程无输入框。 - 未映射 userid 无法进入任何业务页;JWT 过期后自动重登无感。