Files
SBrainCO/client/src/components/RoleRoute.tsx
T
freedakgmail a011729fc9 fix: 角色权限与数据范围修复
- 添加 RoleRoute 路由守卫组件,防止越权访问页面
- 菜单配置:区域经理加'区域对比',店长加'态势感知'
- database.ts: scope注入时检测主表别名避免store_code歧义
- analytics-enhanced.ts: KPI region模式手动注入scope过滤
- situational-awareness.ts: health-score手动注入scope,alerts加skipScope
- smart-scheduling.ts: position-salary-compare店长角色降低HAVING阈值
2026-08-02 21:28:25 +08:00

22 lines
644 B
TypeScript

import { ReactNode } from 'react'
import { Navigate } from 'react-router-dom'
interface RoleRouteProps {
roles: string[]
children: ReactNode
fallback?: string
}
export function RoleRoute({ roles, children, fallback }: RoleRouteProps) {
const userStr = localStorage.getItem('user')
const user = userStr ? JSON.parse(userStr) : null
const role = user?.role
if (!role || !roles.includes(role)) {
const redirect = fallback || (role === 'store' ? '/store' : role === 'regional' ? '/regional' : role === 'platform_admin' ? '/tenant-management' : '/')
return <Navigate to={redirect} replace />
}
return <>{children}</>
}