55 lines
1.4 KiB
JavaScript
55 lines
1.4 KiB
JavaScript
import api from './api';
|
|
|
|
export const authService = {
|
|
// 登录
|
|
login: async (username, password) => {
|
|
const response = await api.post('/auth/login', { username, password });
|
|
// 响应格式: { code, message, data: { user_id, username, caption, email, token, role_id } }
|
|
if (response.data?.token) {
|
|
localStorage.setItem('token', response.data.token);
|
|
// 保存用户信息,不包括 token
|
|
const { token, ...userInfo } = response.data;
|
|
localStorage.setItem('user', JSON.stringify(userInfo));
|
|
}
|
|
return response;
|
|
},
|
|
|
|
// 获取当前用户
|
|
getCurrentUser: async () => {
|
|
return await api.get('/auth/me');
|
|
},
|
|
|
|
// 退出登录
|
|
logout: () => {
|
|
localStorage.removeItem('token');
|
|
localStorage.removeItem('user');
|
|
},
|
|
|
|
// 检查是否已登录
|
|
isAuthenticated: () => {
|
|
return !!localStorage.getItem('token');
|
|
},
|
|
|
|
// 获取本地用户信息
|
|
getLocalUser: () => {
|
|
const userStr = localStorage.getItem('user');
|
|
// 防止解析 "undefined" 或 "null" 字符串
|
|
if (!userStr || userStr === 'undefined' || userStr === 'null') {
|
|
return null;
|
|
}
|
|
try {
|
|
return JSON.parse(userStr);
|
|
} catch (error) {
|
|
console.error('Failed to parse user data:', error);
|
|
return null;
|
|
}
|
|
},
|
|
|
|
// 获取用户统计信息
|
|
getUserStats: async (userId) => {
|
|
return await api.get('/meetings/stats', {
|
|
params: { user_id: userId }
|
|
});
|
|
}
|
|
};
|