imetting_client/src/services/auth.js

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 }
});
}
};