45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
import { authStorage, request } from './request'
|
|
import { toNumber } from './mappers'
|
|
|
|
const toMember = (backendMember = {}) => ({
|
|
id: backendMember.id ?? null,
|
|
openid: backendMember.openid || '',
|
|
unionid: backendMember.unionid || '',
|
|
nickname: backendMember.nickname || '',
|
|
phone: backendMember.phone || '',
|
|
avatar_url: backendMember.avatar_url || '',
|
|
balance: backendMember.balance || '0.00',
|
|
is_active: backendMember.is_active === true,
|
|
created_at: backendMember.created_at || ''
|
|
})
|
|
|
|
const toWechatLogin = (backendData = {}) => ({
|
|
access_token: backendData.access_token || '',
|
|
token_type: backendData.token_type || 'Bearer',
|
|
expires_in: toNumber(backendData.expires_in),
|
|
member: toMember(backendData.member)
|
|
})
|
|
|
|
export const authApi = {
|
|
async wechatLogin(payload = {}) {
|
|
const data = typeof payload === 'string' ? { code: payload } : payload
|
|
const loginData = await request({
|
|
url: '/api/auth/wechat-login',
|
|
method: 'POST',
|
|
data: {
|
|
code: data.code,
|
|
nickname: data.nickname || '',
|
|
avatar_url: data.avatar_url || ''
|
|
}
|
|
}).then(toWechatLogin)
|
|
|
|
authStorage.setToken(loginData.access_token)
|
|
return loginData
|
|
},
|
|
logout() {
|
|
authStorage.clear()
|
|
}
|
|
}
|
|
|
|
export { authStorage }
|