feat: 1. 添加axios全局路由拦截进行自动添加请求jwt。 2.重新整理路由表。 3. 文档列表新增版本差异对比。 4.菜单路由可访问列表通过对接接口返回,添加全局路由检测。
5. 修改统一认证登录和管理员登录是通过接口形式进行,存储返回的accessToken。 6. 修改交叉评查的部分样式
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
/**
|
||||
* 登录客户端
|
||||
* 调用后端 /auth/login 接口,传递 OAuth 用户信息,获取 JWT token
|
||||
*/
|
||||
|
||||
import { API_BASE_URL } from "~/config/api-config";
|
||||
|
||||
/**
|
||||
* 登录请求参数(OAuth 方式)
|
||||
*/
|
||||
export interface LoginRequest {
|
||||
userInfo: {
|
||||
sub: string;
|
||||
username?: string;
|
||||
nickname?: string;
|
||||
email?: string;
|
||||
phone_number?: string;
|
||||
ou_id?: string;
|
||||
ou_name?: string;
|
||||
is_leader?: boolean;
|
||||
[key: string]: unknown;
|
||||
};
|
||||
expiresIn: number;
|
||||
area?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录响应
|
||||
*/
|
||||
export interface LoginResponse {
|
||||
success: boolean;
|
||||
data?: {
|
||||
access_token: string;
|
||||
token_type: string;
|
||||
expires_in: number;
|
||||
user_info: {
|
||||
user_id: string;
|
||||
username: string;
|
||||
nick_name: string;
|
||||
email?: string;
|
||||
phone_number?: string;
|
||||
ou_id: string;
|
||||
ou_name: string;
|
||||
is_leader: boolean;
|
||||
user_role: string;
|
||||
sub: string;
|
||||
};
|
||||
};
|
||||
error?: string;
|
||||
message?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用后端登录接口(OAuth 方式)
|
||||
*
|
||||
* @param loginData 登录数据(OAuth 用户信息)
|
||||
* @returns 登录响应(包含 JWT token)
|
||||
*/
|
||||
export async function loginWithOAuth(loginData: LoginRequest): Promise<LoginResponse> {
|
||||
const loginUrl = `${API_BASE_URL}/auth/login`;
|
||||
|
||||
console.log("📝 [Login Client] 调用后端 OAuth 登录接口:", loginUrl);
|
||||
|
||||
try {
|
||||
const response = await fetch(loginUrl, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Accept": "application/json"
|
||||
},
|
||||
body: JSON.stringify(loginData)
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
const errorData = await response.json().catch(() => ({}));
|
||||
console.error("❌ [Login Client] OAuth 登录请求失败:", response.status, errorData);
|
||||
|
||||
return {
|
||||
success: false,
|
||||
error: errorData.error || errorData.message || `登录失败: ${response.status}`
|
||||
};
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
console.log("✅ [Login Client] OAuth 登录成功");
|
||||
|
||||
return data;
|
||||
} catch (error) {
|
||||
console.error("❌ [Login Client] OAuth 登录请求异常:", error);
|
||||
return {
|
||||
success: false,
|
||||
error: error instanceof Error ? error.message : "网络请求失败"
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 密码登录请求参数
|
||||
*/
|
||||
export interface PasswordLoginRequest {
|
||||
username: string;
|
||||
password: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用后端登录接口(密码方式)
|
||||
*
|
||||
* @param username 用户名
|
||||
* @param password 密码
|
||||
* @returns 登录响应(包含 JWT token)
|
||||
*/
|
||||
export async function loginWithPassword(
|
||||
username: string,
|
||||
password: string
|
||||
): Promise<LoginResponse> {
|
||||
const loginUrl = `${API_BASE_URL}/auth/login`;
|
||||
|
||||
console.log("📝 [Login Client] 调用后端密码登录接口:", loginUrl);
|
||||
|
||||
try {
|
||||
const response = await fetch(loginUrl, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Accept": "application/json"
|
||||
},
|
||||
body: JSON.stringify({
|
||||
username,
|
||||
password
|
||||
})
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
const errorData = await response.json().catch(() => ({}));
|
||||
console.error("❌ [Login Client] 密码登录请求失败:", response.status, errorData);
|
||||
|
||||
return {
|
||||
success: false,
|
||||
error: errorData.error || errorData.message || `登录失败: ${response.status}`
|
||||
};
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
console.log("✅ [Login Client] 密码登录成功");
|
||||
|
||||
return data;
|
||||
} catch (error) {
|
||||
console.error("❌ [Login Client] 密码登录请求异常:", error);
|
||||
return {
|
||||
success: false,
|
||||
error: error instanceof Error ? error.message : "网络请求失败"
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user