Files
tongxunruanjian/account-service/README.md
T
KIMI 0f72fce82b 新增 account-server:自研工号+密码登录体系(B-60)
- account-service/:零依赖 Node 单文件服务 + 极简管理页 + Dockerfile
- 员工账号管理员导入/新增/停用/启用/重置密码,JSON 文件存储,密码 scrypt 加盐哈希
- 登录校验后调 OpenIM REST 自动开户并换取 IM token;停用即拒登并逐平台 force_logout
- 并入 docker-compose(端口 10010,管理口令 ACCOUNT_ADMIN_TOKEN)
- 已对 192.168.200.11 真实环境端到端自测:导入 50 人、双端登录、停用拒登、重置密码全部通过
2026-08-09 00:39:02 +08:00

59 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 公司账号服务(account-service
内部通讯 app 的自研登录体系:替代 OpenIM 样板的注册登录(open-im-chatGPLv3,不用)。
- 员工账号只能由管理员开通:批量导入 / 单个添加 / 停用 / 启用 / 重置密码
- 员工用 **工号 + 密码** 登录;校验通过后,本服务向 OpenIM 换取 IM token 返回客户端
- 员工数据存在本地 JSON 文件(容器内 `/app/data/employees.json`,已挂卷),密码 scrypt 加盐哈希,不落明文
- 停用 = 本服务拒绝登录 + 调 OpenIM `force_logout` 踢掉各端在线连接
- 零 npm 依赖,Node 20 单文件服务
## 接口约定(供手机端 / PC 端对接)
### 员工登录(客户端调用)
```
POST /api/login
{ "staffNo": "10001", "password": "xxx", "platformID": 2 }
```
`platformID` 按端传:1 iOS、2 Android、3 Windows、4 macOS、5/10 Web(不传默认 10)。
成功:
```json
{ "code": 0, "msg": "", "data": { "userID": "10001", "nickname": "张三", "imToken": "<openim token>", "expireTimeSeconds": 7776000 } }
```
客户端拿到后用 `userID + imToken` 走 OpenIM SDK 登录;OpenIM 的 API 地址为 `http://<服务器IP>:10002`WebSocket 为 `ws://<服务器IP>:10001`
失败:`code != 0``msg` 为大白话原因(工号或密码错误 / 账号已停用,请联系管理员)。
### 管理接口(请求头带 `admin-token: <ACCOUNT_ADMIN_TOKEN>`
| 方法 | 路径 | 说明 |
| --- | --- | --- |
| GET | `/api/admin/employees` | 员工列表 |
| POST | `/api/admin/employees` | 添加 `{staffNo, name, password}` |
| POST | `/api/admin/import` | 批量导入 `{csv}`,每行 `工号,姓名,初始密码`(Tab 分隔也行,Excel 直接粘) |
| POST | `/api/admin/disable` | 停用 `{staffNo}`,立即无法登录并被踢下线 |
| POST | `/api/admin/enable` | 启用 `{staffNo}` |
| POST | `/api/admin/reset_password` | 重置密码 `{staffNo, password}` |
管理页:浏览器打开 `http://<服务器IP>:10010/`,输入管理口令即可操作,无需写接口。
## 部署
已并入根目录 `docker-compose.yaml`(服务名 `account-server`),随整套环境一起起:
```bash
docker compose up -d --build account-server
```
相关环境变量(见 `.env.example`):
- `ACCOUNT_PORT`:宿主端口,默认 10010
- `ACCOUNT_ADMIN_TOKEN`:管理口令,**部署时务必改掉默认值**
重启/升级:改代码后 `docker compose up -d --build account-server`;数据在 `./data/account/employees.json`,重建容器不丢。