fix: align login and home routing with leaudit backend
This commit is contained in:
@@ -664,7 +664,7 @@ export async function getUserRoutesByRole(
|
||||
// 注意:Authorization 头会由 axios 拦截器自动添加(从 localStorage 读取)
|
||||
// 但为了确保使用正确的 token,这里仍然显式传递
|
||||
const response = await apiRequest<BackendRoutesResponse>(
|
||||
'/rbac/user/routes', // endpoint (第一个参数)
|
||||
'/api/rbac/user/routes', // endpoint (第一个参数)
|
||||
{
|
||||
method: 'GET',
|
||||
headers: {
|
||||
@@ -678,6 +678,12 @@ export async function getUserRoutesByRole(
|
||||
// 检查响应是否成功
|
||||
if (response.error) {
|
||||
console.error('❌ [User Routes] API 请求失败:', response.error);
|
||||
|
||||
if (response.status === 404) {
|
||||
console.warn('⚠️ [User Routes] 后端路由权限接口未落地,回退到静态菜单');
|
||||
return buildFallbackRoutes(roleKey);
|
||||
}
|
||||
|
||||
// 🔑 如果是令牌过期错误,标记需要重定向到登录页
|
||||
const isTokenExpired = response.error.includes('令牌已过期') ||
|
||||
response.error.includes('令牌') ||
|
||||
@@ -702,6 +708,10 @@ export async function getUserRoutesByRole(
|
||||
// 检查响应数据
|
||||
if (!response.data) {
|
||||
console.error('❌ [User Routes] 后端未返回数据');
|
||||
if (response.status === 404) {
|
||||
console.warn('⚠️ [User Routes] 后端路由权限接口未落地,回退到静态菜单');
|
||||
return buildFallbackRoutes(roleKey);
|
||||
}
|
||||
if (typeof window !== 'undefined') {
|
||||
toastService.error("获取路由数据失败");
|
||||
}
|
||||
@@ -998,6 +1008,7 @@ export function mapUserRoleToRoleKey(userRole: string): string {
|
||||
const roleMapping: Record<string, string> = {
|
||||
'common': 'common',
|
||||
'admin': 'admin',
|
||||
'provincial_admin': 'admin',
|
||||
'deptLeader': 'deptLeader',
|
||||
'groupLeader': 'groupLeader',
|
||||
// 添加常见的后端角色映射
|
||||
@@ -1009,4 +1020,23 @@ export function mapUserRoleToRoleKey(userRole: string): string {
|
||||
|
||||
// 如果找不到映射,返回 userRole 本身(假设后端已经返回了正确的 role_key)
|
||||
return roleMapping[userRole] || userRole || 'common';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 基于静态菜单数据构造后备结果。
|
||||
*/
|
||||
function buildFallbackRoutes(roleKey: string): {
|
||||
success: boolean;
|
||||
data: MenuItem[];
|
||||
permissionMap: Record<string, string[]>;
|
||||
} {
|
||||
const mappedRoleKey = mapUserRoleToRoleKey(roleKey);
|
||||
const fallbackMenus = FALLBACK_MENU_DATA[mappedRoleKey] || FALLBACK_MENU_DATA.common;
|
||||
const permissionMap: Record<string, string[]> = {};
|
||||
|
||||
return {
|
||||
success: true,
|
||||
data: fallbackMenus,
|
||||
permissionMap,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user