a011729fc9
- 添加 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阈值
22 lines
644 B
TypeScript
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}</>
|
|
}
|