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阈值
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
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}</>
|
||||
}
|
||||
Reference in New Issue
Block a user