Files
Edu/services/iam
SpecialX a2f0ca26ae feat(iam): 实现 RBAC + 视口配置 + DataScope
- 新增 iam_role_viewports 表(4 层视口模型:L1 导航/L2 路由/L3 组件/L4 数据)
- iam_users 添加 data_scope 字段(6 级:self/class/grade/school/district/all)
- JWT payload 包含 dataScope,注册时自动分配 teacher 角色
- 新增 getEffectivePermissions(多角色权限去重)
- 新增 getUserViewports(按权限过滤视口)
- 新增 RbacController:GET /iam/viewports, /iam/permissions/effective, /iam/roles, /iam/permissions
- 添加 7 个权限点 + 12 条角色权限映射 + 7 个视口种子数据
2026-07-09 00:35:34 +08:00
..

IAM Service

身份与访问管理服务Identity and Access ManagementP2 身份阶段交付。

职责

  • 用户注册 / 登录 / 刷新令牌
  • 角色Role与权限Permission管理
  • Access / Refresh Token 签发与校验
  • 用户信息查询(供 BFF / Gateway 聚合)

技术栈

  • NestJS 10 + TypeScriptESM
  • Drizzle ORM + MySQL
  • bcrypt 密码哈希
  • jsonwebtokenP2 骨架使用 HS256后续切 RS256
  • pino 日志 / prom-client 指标 / OpenTelemetry 链路

端口

默认 3002,通过 PORT 环境变量覆盖。

API

Method Path 说明
POST /iam/register 注册
POST /iam/login 登录
POST /iam/refresh 刷新令牌
GET /iam/me 当前用户信息(需 x-user-id 头)

健康检查

端点 用途 鉴权
GET /healthz 存活探针liveness仅返回进程状态不检查依赖
GET /readyz 就绪探针readiness检查 DB 连接,失败返回 503

实现见 src/shared/health/health.controller.ts5 个 NestJS 服务iam/core-edu/content/msg/classes一致。

数据表

iam_users / iam_roles / iam_user_roles / iam_permissions / iam_role_permissions / iam_refresh_tokens