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 {};