import axios from 'axios' // 配置axios基础URL import { getFinalConfig } from '../../../../config/app.config.js'; const getApiBaseUrl = () => getFinalConfig().apiBaseUrl; // 创建axios实例 const api = axios.create({ baseURL: getApiBaseUrl(), timeout: 10000, headers: { 'Content-Type': 'application/json' } }) // 请求拦截器 api.interceptors.request.use( config => { // 可以在这里添加token等认证信息 const token = localStorage.getItem('token') if (token) { config.headers.Authorization = `Bearer ${token}` } return config }, error => { return Promise.reject(error) } ) // 响应拦截器 api.interceptors.response.use( response => { return response.data }, error => { console.error('API请求错误:', error) // 直接返回错误对象,让组件处理具体的错误信息 return Promise.reject(error) } ) export const userService = { // 获取用户列表 async getUsers(page = 1, pageSize = 10) { try { const response = await api.get('/auth/admin/users', { params: { page, pageSize } }) return response } catch (error) { throw error } }, // 获取单个用户 async getUser(id) { try { const response = await api.get(`/auth/admin/users/${id}`) return response } catch (error) { throw error } }, // 创建用户 async createUser(userData) { try { const response = await api.post('/auth/admin/users', userData) return response } catch (error) { throw error } }, // 更新用户 async updateUser(id, userData) { try { const response = await api.put(`/auth/admin/users/${id}`, userData) return response } catch (error) { throw error } }, // 删除用户 async deleteUser(id) { try { await api.delete(`/auth/admin/users/${id}`) return true } catch (error) { throw error } }, // 获取角色列表 async getRoles() { try { const response = await api.get('/auth/admin/roles') return response } catch (error) { throw error } }, // 修改密码 async changePassword(passwordData) { try { const response = await api.post('/auth/change-password', passwordData) return response } catch (error) { throw error } }, // 获取密码策略 async getPasswordPolicy() { try { const response = await api.get('/auth/password-policy') return response } catch (error) { throw error } }, // 验证密码强度 async validatePassword(password) { try { const response = await api.post('/auth/validate-password', { password }) return response } catch (error) { throw error } }, // 检查密码状态 async checkPasswordStatus() { try { const response = await api.get('/auth/password-status') return response } catch (error) { throw error } }, // 获取权限列表 async getPermissions() { try { const response = await api.get('/permissions') return response } catch (error) { throw error } }, // 获取验证码 async getCaptcha() { try { const response = await api.get('/auth/captcha') return response } catch (error) { throw error } }, // 用户登录 async login(credentials) { try { // 确保credentials包含client_ip const loginData = { username: credentials.username, password: credentials.password, captcha: credentials.captcha, captcha_id: credentials.captcha_id, client_ip: credentials.client_ip || '127.0.0.1' // 默认IP } const response = await api.post('/auth/login', loginData) // 只保存token,用户信息由MainLayout处理 if (response.token) { localStorage.setItem('token', response.token) localStorage.setItem('isLoggedIn', 'true') } return response } catch (error) { throw error } }, // 用户登出 async logout(token) { try { if (token) { // 使用传入的token调用登出接口,发送token到请求体 await api.post('/auth/logout', { token: token }, { headers: { 'Authorization': `Bearer ${token}` } }) } else { // 如果没有传入token,从localStorage获取并使用 const storedToken = localStorage.getItem('token') if (storedToken) { await api.post('/auth/logout', { token: storedToken }, { headers: { 'Authorization': `Bearer ${storedToken}` } }) } else { // 如果没有token,直接调用登出接口(后端会处理) await api.post('/auth/logout', { token: '' }) } } // 完全清理本地存储的认证信息 localStorage.removeItem('token') localStorage.removeItem('user') localStorage.removeItem('isLoggedIn') return true } catch (error) { throw error } }, // 获取当前用户信息 async getCurrentUser(token = null) { try { // 如果传入了token,使用传入的token;否则使用localStorage中的token const authToken = token || localStorage.getItem('token') if (!authToken) { throw new Error('未找到认证token') } const response = await api.get('/auth/userinfo', { headers: { 'Authorization': `Bearer ${authToken}` } }) return response } catch (error) { throw error } }, // 修改密码 async changePassword(passwordData) { try { const response = await api.post('/auth/change-password', passwordData) return response } catch (error) { throw error } }, // 重置密码 async resetPassword(email) { try { const response = await api.post('/auth/reset-password', { email }) return response } catch (error) { throw error } } } export default userService