|
|
@@ -102,7 +102,7 @@ packages/
|
|
|
|
|
|
3. **Story 3:** 租户模块集成到server - 将租户模块包(@d8d/tenant-module-mt)集成到server中,包括租户管理路由、超级管理员认证和租户数据隔离功能,确保server能够支持租户管理操作
|
|
|
|
|
|
-4. **Story 4:** 租户UI包集成到Web - 复制`web/src/client/admin`目录为`web/src/client/tenant`,在tenant目录中集成多租户UI包,替换原有的auth provider、登录页等组件,确保Web应用能够支持多租户操作和界面展示
|
|
|
+4. **Story 4:** 租户UI包集成到Web - 复制`web/src/client/admin`目录为`web/src/client/tenant`,在tenant目录中集成`@d8d/tenant-management-ui-mt`租户管理UI包,使用超级管理员认证系统(superadmin/admin123),添加租户管理路由和超级管理员认证逻辑,确保Web应用能够支持租户管理操作
|
|
|
|
|
|
### 阶段 3: 系统集成和验证
|
|
|
|
|
|
@@ -209,46 +209,34 @@ cp -r web/src/client/admin web/src/client/tenant
|
|
|
|
|
|
```typescript
|
|
|
// web/src/client/tenant/routes.tsx - 添加租户管理路由
|
|
|
-import { TenantManagement } from '@d8d/tenant-management-ui-mt';
|
|
|
+import { TenantsPage } from '@d8d/tenant-management-ui-mt';
|
|
|
|
|
|
// 在路由配置中添加
|
|
|
{
|
|
|
path: 'tenants',
|
|
|
- element: <TenantManagement />, // 租户管理界面
|
|
|
+ element: <TenantsPage />, // 租户管理界面
|
|
|
},
|
|
|
|
|
|
-// web/src/client/tenant/hooks/AuthProvider.tsx - 租户感知的认证
|
|
|
-const handleLogin = async (username: string, password: string, tenantId?: number): Promise<void> => {
|
|
|
- // 添加租户ID到登录请求
|
|
|
- const response = await authClient.login.$post({
|
|
|
+// web/src/client/tenant/api_init.ts - 初始化租户管理客户端
|
|
|
+import { tenantClientManager } from '@d8d/tenant-management-ui-mt/api';
|
|
|
+
|
|
|
+// 初始化租户管理客户端
|
|
|
+tenantClientManager.init('/api/v1/tenants');
|
|
|
+
|
|
|
+// web/src/client/tenant/hooks/AuthProvider.tsx - 使用超级管理员认证
|
|
|
+const handleLogin = async (username: string, password: string): Promise<void> => {
|
|
|
+ // 使用租户模块的超级管理员登录API
|
|
|
+ const response = await tenantClientManager.get().login.$post({
|
|
|
json: {
|
|
|
username,
|
|
|
- password,
|
|
|
- tenantId
|
|
|
+ password
|
|
|
}
|
|
|
});
|
|
|
// ... 其他登录逻辑
|
|
|
};
|
|
|
|
|
|
-// web/src/client/tenant/pages/Login.tsx - 添加租户选择
|
|
|
-const [selectedTenant, setSelectedTenant] = useState<number | null>(null);
|
|
|
-
|
|
|
-// 在表单中添加租户选择器
|
|
|
-<FormField
|
|
|
- control={form.control}
|
|
|
- name="tenantId"
|
|
|
- render={({ field }) => (
|
|
|
- <FormItem>
|
|
|
- <FormLabel>选择租户</FormLabel>
|
|
|
- <FormControl>
|
|
|
- <TenantSelect
|
|
|
- value={field.value}
|
|
|
- onChange={field.onChange}
|
|
|
- />
|
|
|
- </FormControl>
|
|
|
- </FormItem>
|
|
|
- )}
|
|
|
-/>
|
|
|
+// web/src/client/tenant/pages/Login.tsx - 超级管理员登录页
|
|
|
+// 使用固定的超级管理员账号进行登录,无需租户选择
|
|
|
```
|
|
|
|
|
|
### API客户端初始化
|