52 lines
1.2 KiB
JavaScript
52 lines
1.2 KiB
JavaScript
const { request } = require('./request');
|
|
|
|
const login = async (userInfo) => {
|
|
const codeRes = await new Promise((resolve, reject) => {
|
|
wx.login({
|
|
success: resolve,
|
|
fail: reject
|
|
});
|
|
});
|
|
|
|
const code = codeRes.code;
|
|
const res = await request({
|
|
url: '/api/auth/wx-login',
|
|
method: 'POST',
|
|
data: { code, userInfo: userInfo || null }
|
|
});
|
|
|
|
const body = res.data || {};
|
|
if (!body.success) {
|
|
throw new Error(body.error || '登录失败');
|
|
}
|
|
|
|
const token = body.data?.token || '';
|
|
if (!token) {
|
|
throw new Error('登录失败:缺少 token');
|
|
}
|
|
|
|
wx.setStorageSync('auth_token', token);
|
|
const app = getApp();
|
|
if (app?.globalData) app.globalData.token = token;
|
|
return body.data?.user || null;
|
|
};
|
|
|
|
const fetchMe = async () => {
|
|
try {
|
|
const res = await request({ url: '/api/auth/me', method: 'GET' });
|
|
const body = res.data || {};
|
|
if (!body.success) throw new Error(body.message || '获取用户信息失败');
|
|
return body.data;
|
|
} catch (e) {
|
|
const msg = e?.userMessage || e?.message || '获取用户信息失败';
|
|
const err = new Error(msg);
|
|
err.baseUrl = e?.baseUrl;
|
|
throw err;
|
|
}
|
|
};
|
|
|
|
module.exports = {
|
|
login,
|
|
fetchMe
|
|
};
|