feat: 后端用户认证和权限过滤
- 新增 auth 模块:jumpToken 代理交换、用户信息获取、JWT 签发 - 三级权限:full(所有权限/数智中心/BI-Leader)、department(BI-Leader-Dep)、personal - 添加 managerId 到车辆数据模型,支持个人级别按 userId 精确过滤 - auth 中间件保护所有 /api/* 端点(跳过 /api/health 和 /api/auth/*) - 所有路由集成 filterByPermission 权限过滤 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
6dbd36dcd3
commit
2575778293
@@ -0,0 +1,26 @@
|
||||
import type { AuthUser } from './types.js';
|
||||
|
||||
/**
|
||||
* 通用权限过滤函数
|
||||
* 适配 CachedVehicle(department, manager, managerId)和 Vehicle(departmentName, customerManager, managerId)
|
||||
*/
|
||||
export function filterByPermission<T>(
|
||||
items: T[],
|
||||
user: AuthUser,
|
||||
): T[] {
|
||||
if (user.permissionLevel === 'full') return items;
|
||||
|
||||
if (user.permissionLevel === 'department') {
|
||||
return items.filter(v => {
|
||||
const obj = v as any;
|
||||
const dept = obj.departmentName || obj.department || null;
|
||||
return dept === user.depName;
|
||||
});
|
||||
}
|
||||
|
||||
// personal: 仅看自己负责的车辆 (bd = userId)
|
||||
return items.filter(v => {
|
||||
const obj = v as any;
|
||||
return obj.managerId === user.userId;
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user