Ready for Review
As a 系统管理员 I want 创建租户基础包和租户管理功能 so that 能够为多租户系统提供基础的租户管理和上下文支持
@d8d/merchant-module 为 @d8d/tenant-module-mt 租户管理模块@d8d/merchant-module 为 @d8d/tenant-module-mt (AC: 1)
packages/
├── merchant-module/ (源包)
│ ├── src/
│ │ ├── entities/merchant.entity.ts
│ │ ├── services/merchant.service.ts
│ │ ├── routes/
│ │ ├── schemas/
│ │ └── types/
│ └── package.json
└── tenant-module-mt/ (目标包)
├── src/
│ ├── entities/tenant.entity.ts
│ ├── services/tenant.service.ts
│ ├── routes/
│ ├── schemas/
│ └── types/
└── package.json
从商户实体到租户实体的字段映射:
name (商户名称) → name (租户名称)username (用户名) → code (租户代码,唯一标识)password, loginNum, loginTime, loginIp, lastLoginTime, lastLoginIpstatus (租户状态), config (租户配置)重要说明:此租户认证中间件仅用于租户管理API,与认证模块的认证中间件是独立的两套系统。
设计变更:租户管理不需要区分管理员和用户角色,使用固定的超级管理员账号进行管理,通过JWT token进行认证。
认证逻辑:验证JWT token并检查是否为超级管理员权限(固定的超级管理员ID为1),而不是提取租户ID。
新增功能:提供简单的登录接口,使用固定的账号和密码生成JWT token,方便测试和管理。
采用Hono中间件模式与现有技术栈统一:
import { Context, Next } from 'hono';
export async function tenantAuthMiddleware(c: Context, next: Next) {
try {
const authHeader = c.req.header('Authorization');
if (!authHeader) {
return c.json({ message: 'Authorization header missing' }, 401);
}
const tokenParts = authHeader.split(' ');
if (tokenParts.length !== 2 || tokenParts[0] !== 'Bearer') {
return c.json({ message: 'Authorization header missing' }, 401);
}
const token = tokenParts[1];
if (!token) {
return c.json({ message: 'Token missing' }, 401);
}
// 验证JWT并检查是否为超级管理员
const decoded = jwt.verify(token, process.env.JWT_SECRET!) as any;
const isSuperAdmin = decoded.isSuperAdmin;
if (!isSuperAdmin) {
return c.json({ message: 'Access denied. Super admin privileges required' }, 403);
}
await next();
} catch (error) {
console.error('Tenant auth middleware error:', error);
return c.json({ message: 'Invalid token or authentication failed' }, 401);
}
}
@d8d/shared-crud, @d8d/shared-types, @d8d/shared-utilstests/ 目录下| Date | Version | Description | Author |
|---|---|---|---|
| 2025-11-13 | 1.0 | 初始故事创建 | Claude |
此部分将由开发代理在实施过程中填写
Claude Code
@d8d/merchant-module 为 @d8d/tenant-module-mt 租户管理模块/packages/tenant-module-mt/package.json - 包配置/packages/tenant-module-mt/src/entities/tenant.entity.ts - 租户实体/packages/tenant-module-mt/src/services/tenant.service.ts - 租户服务/packages/tenant-module-mt/src/schemas/tenant.schema.ts - 租户Schema/packages/tenant-module-mt/src/middleware/tenant-auth.middleware.ts - 租户认证中间件/packages/tenant-module-mt/src/routes/index.ts - 统一租户路由/packages/tenant-module-mt/src/routes/auth.routes.ts - 认证路由/packages/tenant-module-mt/tests/integration/tenant-routes.integration.test.ts - 租户管理集成测试/packages/tenant-module-mt/tests/integration/auth-routes.integration.test.ts - 认证接口集成测试此部分将由QA代理在QA审查后填写