Explorar el Código

✨ feat(crud): 增强数据权限控制功能

- 在通用CRUD路由中添加用户信息获取,将用户ID传递给列表查询方法
- 完善认证中间件,对未提供认证信息的请求返回401错误

♻️ refactor(crud): 优化查询参数处理逻辑

- 在列表查询接口中统一获取用户认证信息
- 调整数据查询方法参数,增加用户ID参数以支持数据权限过滤
yourname hace 1 mes
padre
commit
5163e805d8

+ 6 - 2
packages/shared-crud/src/routes/generic-crud.routes.ts

@@ -242,6 +242,7 @@ export function createCrudRoutes<
         try {
           const query = c.req.valid('query') as any;
           const { page, pageSize, keyword, sortBy, sortOrder, filters } = query;
+          const user = c.get('user');
 
           // 构建排序对象
           const order: any = {};
@@ -274,7 +275,8 @@ export function createCrudRoutes<
             undefined,
             relations || [],
             order,
-            parsedFilters
+            parsedFilters,
+            user?.id
           );
 
           return c.json({
@@ -414,6 +416,7 @@ export function createCrudRoutes<
         try {
           const query = c.req.valid('query') as any;
           const { page, pageSize, keyword, sortBy, sortOrder, filters } = query;
+          const user = c.get('user');
 
           // 构建排序对象
           const order: any = {};
@@ -446,7 +449,8 @@ export function createCrudRoutes<
             undefined,
             relations || [],
             order,
-            parsedFilters
+            parsedFilters,
+            user?.id
           );
 
           return c.json({

+ 3 - 0
packages/shared-crud/tests/integration/data-permission.integration.test.ts

@@ -132,6 +132,9 @@ describe('共享CRUD数据权限控制集成测试', () => {
         } catch (error) {
           // token解析失败
         }
+      } else {
+        // 没有认证信息,返回401
+        return c.json({ code: 401, message: '认证失败' }, 401);
       }
       await next();
     };