|
|
|
@ -9,6 +9,8 @@ const KEY_TRAVEL_AGENCY_ID = 'G-INT:TRAVEL_AGENCY_ID'
|
|
|
|
|
const KEY_USER_ID = 'G-INT:USER_ID'
|
|
|
|
|
const KEY_USER_DETAIL = 'G-JSON:USER_DETAIL'
|
|
|
|
|
|
|
|
|
|
const WILDCARD_TOKEN = '*'
|
|
|
|
|
|
|
|
|
|
export const fetchLoginToken = async (username, password) => {
|
|
|
|
|
|
|
|
|
|
const formData = new FormData()
|
|
|
|
@ -28,6 +30,13 @@ export const fetchUserDetail = async (loginToken) => {
|
|
|
|
|
return errcode !== 0 ? {} : Result
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const fetchPermissionListByUserId = async (userId) => {
|
|
|
|
|
|
|
|
|
|
const { errcode, result } = await fetchJSON(
|
|
|
|
|
`${HT_HOST}/service-CooperateSOA/get_account_permission_list`, { wu_id: userId})
|
|
|
|
|
return errcode !== 0 ? {} : result
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function fetchLastRequet() {
|
|
|
|
|
const { errcode, result } = await fetchJSON(`${HT_HOST}/service-CooperateSOA/GetLastReqDate`)
|
|
|
|
|
return errcode !== 0 ? {} : result
|
|
|
|
@ -41,68 +50,60 @@ const useAuthStore = create((set, get) => ({
|
|
|
|
|
|
|
|
|
|
loginStatus: 0,
|
|
|
|
|
|
|
|
|
|
loginUser: {
|
|
|
|
|
token: '',
|
|
|
|
|
telephone: '',
|
|
|
|
|
emailAddress: '',
|
|
|
|
|
cityId: 0,
|
|
|
|
|
permissionList: [],
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
isPermitted: (perm) => {
|
|
|
|
|
const { permissionList } = get()
|
|
|
|
|
// 测试权限使用:
|
|
|
|
|
// if (perm === '/account/management') return false
|
|
|
|
|
// if (perm === '/account/role/new') return false
|
|
|
|
|
return true
|
|
|
|
|
// return true
|
|
|
|
|
// 以上是 Hardcode 判断
|
|
|
|
|
// 以下是权限列表从数据库读取后使用的方法
|
|
|
|
|
// return this.permissionList.some((value, key, arry) => {
|
|
|
|
|
// if (value.indexOf(WILDCARD_TOKEN) > -1) {
|
|
|
|
|
// return true
|
|
|
|
|
// }
|
|
|
|
|
// if (value === perm) {
|
|
|
|
|
// return true
|
|
|
|
|
// }
|
|
|
|
|
// return false
|
|
|
|
|
// })
|
|
|
|
|
|
|
|
|
|
return permissionList.some((value, key, arry) => {
|
|
|
|
|
if (value.indexOf(WILDCARD_TOKEN) > -1) {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
if (value === perm) {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
return false
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
validateUserPassword: async (usr, pwd) => {
|
|
|
|
|
const { startTokenInterval } = get()
|
|
|
|
|
const { startTokenInterval, loadUserPermission } = get()
|
|
|
|
|
const { setStorage } = usingStorage()
|
|
|
|
|
|
|
|
|
|
const { token: loginToken } = await fetchLoginToken(usr, pwd)
|
|
|
|
|
|
|
|
|
|
const userDetail = await fetchUserDetail(loginToken)
|
|
|
|
|
const { token: loginToken, WU_ID: userId } = await fetchLoginToken(usr, pwd)
|
|
|
|
|
await loadUserPermission(userId)
|
|
|
|
|
|
|
|
|
|
set(() => ({
|
|
|
|
|
loginUser: {
|
|
|
|
|
telephone: userDetail.LkPhone,
|
|
|
|
|
emailAddress: userDetail.LMI_listmail,
|
|
|
|
|
cityId: userDetail.citysn,
|
|
|
|
|
},
|
|
|
|
|
tokenTimeout: false,
|
|
|
|
|
loginStatus: 302
|
|
|
|
|
}))
|
|
|
|
|
|
|
|
|
|
setStorage(KEY_LOGIN_TOKEN, loginToken)
|
|
|
|
|
setStorage(KEY_USER_ID, userDetail.LMI_SN)
|
|
|
|
|
setStorage(KEY_USER_ID, userId)
|
|
|
|
|
setStorage(KEY_TRAVEL_AGENCY_ID, userDetail.LMI_VEI_SN)
|
|
|
|
|
setStorage(KEY_USER_DETAIL, {username: userDetail.LoginName, travelAgencyName: userDetail.VName})
|
|
|
|
|
appendRequestParams('token', loginToken)
|
|
|
|
|
// loadPageSpy(`${json.Result.VName}-${json.Result.LoginName}`)
|
|
|
|
|
startTokenInterval()
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
loadUserPermission: async(userId) => {
|
|
|
|
|
const permissionResult = await fetchPermissionListByUserId(userId)
|
|
|
|
|
set(() => ({
|
|
|
|
|
permissionList: permissionResult.map(p => p.res_pattern)
|
|
|
|
|
}))
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
logout: () => {
|
|
|
|
|
const { tokenInterval } = get()
|
|
|
|
|
const { clearStorage } = usingStorage()
|
|
|
|
|
clearStorage()
|
|
|
|
|
clearInterval(tokenInterval)
|
|
|
|
|
set(() => ({
|
|
|
|
|
loginUser: {
|
|
|
|
|
},
|
|
|
|
|
loginStatus: 0,
|
|
|
|
|
tokenInterval: null,
|
|
|
|
|
tokenTimeout: true
|
|
|
|
|