79 lines
2.3 KiB
79 lines
2.3 KiB
/**
|
|
* authStore
|
|
*/
|
|
import { computed, ref } from 'vue';
|
|
import { defineStore } from 'pinia';
|
|
import http from '@/utils/http';
|
|
import * as helpers from '@/utils/helpers';
|
|
import * as urls from '@/config/urls';
|
|
import auth from '@/utils/auth';
|
|
import UserInfo from '@/utils/UserInfo';
|
|
|
|
export const useAuthStore = defineStore('auth', () => {
|
|
// state
|
|
const userInfo = ref(UserInfo.get());
|
|
|
|
const isPlatform = computed(() => userInfo.value.roleId === 1);
|
|
const isManufacturer = computed(() => userInfo.value.roleId === 2);
|
|
const isRegulator = computed(() => userInfo.value.roleId === 3);
|
|
const isPilot = computed(() => userInfo.value.roleId === 4);
|
|
|
|
// const isPlatform = computed(() => {
|
|
// const { roles } = userInfo;
|
|
// return (roles || []).includes('platform');
|
|
// });
|
|
|
|
// const isFarmer = computed(() => {
|
|
// const { roles } = userInfo;
|
|
// return (roles || []).includes('farmer');
|
|
// });
|
|
|
|
// action
|
|
function loginWithPassword(formData = {}) {
|
|
const requestDate = helpers.pick(formData, [
|
|
'phone',
|
|
'password',
|
|
]);
|
|
return http.getInstance(false).post(urls.LOGIN_WITH_PASSWORD, requestDate).then(({ data }) => {
|
|
// 获取信息
|
|
const { data: { accessToken } = {}, extra = {} } = data || {};
|
|
// 更新信息
|
|
const newUserInfo = {
|
|
...userInfo.value,
|
|
...extra,
|
|
};
|
|
userInfo.value = { ...newUserInfo };
|
|
// 保存信息
|
|
UserInfo.save(newUserInfo);
|
|
if (accessToken) {
|
|
auth.saveToken(accessToken);
|
|
}
|
|
return data;
|
|
});
|
|
}
|
|
|
|
function updatePassword(formData = {}) {
|
|
const reqData = helpers.pick(formData, [
|
|
'id',
|
|
'oldPassword',
|
|
'newPassword',
|
|
]);
|
|
|
|
const url = helpers.buildURL(urls.UPDATE_PASSWORD, reqData.id);
|
|
return http.getInstance().put(url, reqData).then(({ data }) => data);
|
|
}
|
|
|
|
return {
|
|
userInfo,
|
|
// isPlatform,
|
|
// isFarmer,
|
|
loginWithPassword,
|
|
updatePassword,
|
|
isRegulator,
|
|
isPlatform,
|
|
isManufacturer,
|
|
isPilot,
|
|
};
|
|
});
|
|
|
|
export default {};
|
|
|