140 lines
3.2 KiB
JavaScript
140 lines
3.2 KiB
JavaScript
export const API_BASE_URL = (() => {
|
|
if (process.env.NODE_ENV === 'development') {
|
|
return 'http://localhost:10051/api'
|
|
}
|
|
return 'https://tuanwei-api.gxwebsoft.com/api'
|
|
})()
|
|
|
|
export const TOKEN_STORAGE_KEYS = ['access_token', 'Authorization', 'uni_id_token', 'token']
|
|
export const DEFAULT_TENANT_ID = 10049
|
|
export const TOKEN_HEADER_NAME = 'Authorization'
|
|
export const LOGIN_PAGE_URL = '/pages/login/index'
|
|
|
|
export function getToken() {
|
|
for (let index = 0; index < TOKEN_STORAGE_KEYS.length; index += 1) {
|
|
const value = uni.getStorageSync(TOKEN_STORAGE_KEYS[index])
|
|
if (value) {
|
|
return value
|
|
}
|
|
}
|
|
return ''
|
|
}
|
|
|
|
export function hasToken() {
|
|
return !!getToken()
|
|
}
|
|
|
|
export function clearAuthStorage() {
|
|
TOKEN_STORAGE_KEYS.forEach((key) => {
|
|
try {
|
|
uni.removeStorageSync(key)
|
|
} catch (error) {}
|
|
})
|
|
try {
|
|
uni.removeStorageSync('user_info')
|
|
} catch (error) {}
|
|
}
|
|
|
|
export function setAuthInfo(loginResult) {
|
|
const result = loginResult || {}
|
|
const token = result.access_token || result.accessToken || result.token || ''
|
|
const user = result.user || {}
|
|
if (token) {
|
|
uni.setStorageSync('access_token', token)
|
|
uni.setStorageSync('Authorization', token)
|
|
uni.setStorageSync('token', token)
|
|
}
|
|
uni.setStorageSync('user_info', user)
|
|
return {
|
|
token,
|
|
user
|
|
}
|
|
}
|
|
|
|
export function getStoredUserInfo() {
|
|
return uni.getStorageSync('user_info') || {}
|
|
}
|
|
|
|
export function redirectToLogin(redirectUrl) {
|
|
const query = redirectUrl ? `?redirect=${encodeURIComponent(redirectUrl)}` : ''
|
|
uni.reLaunch({
|
|
url: `${LOGIN_PAGE_URL}${query}`
|
|
})
|
|
}
|
|
|
|
export function ensureLoggedIn(options = {}) {
|
|
const { redirectUrl } = options
|
|
if (hasToken()) {
|
|
return true
|
|
}
|
|
redirectToLogin(redirectUrl)
|
|
return false
|
|
}
|
|
|
|
export function request({ url, method = 'GET', data, header = {}, auth = true }) {
|
|
const token = getToken()
|
|
return new Promise((resolve, reject) => {
|
|
uni.request({
|
|
url: /^https?:\/\//.test(url) ? url : `${API_BASE_URL}${url}`,
|
|
method,
|
|
data,
|
|
header: {
|
|
'Content-Type': 'application/json',
|
|
...(auth && token ? { [TOKEN_HEADER_NAME]: token } : {}),
|
|
...header
|
|
},
|
|
success: (response) => {
|
|
const responseHeader = (response && response.header) || {}
|
|
const nextToken =
|
|
responseHeader[TOKEN_HEADER_NAME] ||
|
|
responseHeader[TOKEN_HEADER_NAME.toLowerCase()]
|
|
if (nextToken) {
|
|
uni.setStorageSync('access_token', nextToken)
|
|
uni.setStorageSync('Authorization', nextToken)
|
|
uni.setStorageSync('token', nextToken)
|
|
}
|
|
const body = (response && response.data) || {}
|
|
const code = Number(body.code)
|
|
if (code === 0 || code === 200) {
|
|
resolve(body.data !== undefined ? body.data : body)
|
|
return
|
|
}
|
|
if (code === 401) {
|
|
clearAuthStorage()
|
|
}
|
|
reject(new Error(body.message || '请求失败'))
|
|
},
|
|
fail: (error) => {
|
|
reject(new Error((error && error.errMsg) || '网络请求失败'))
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
export function get(url, data, options = {}) {
|
|
return request({
|
|
url,
|
|
method: 'GET',
|
|
data,
|
|
...options
|
|
})
|
|
}
|
|
|
|
export function post(url, data, options = {}) {
|
|
return request({
|
|
url,
|
|
method: 'POST',
|
|
data,
|
|
...options
|
|
})
|
|
}
|
|
|
|
export function put(url, data, options = {}) {
|
|
return request({
|
|
url,
|
|
method: 'PUT',
|
|
data,
|
|
...options
|
|
})
|
|
}
|