# 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 过期后自动重登无感。