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