67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
import { ref } from 'vue';
|
|
import { defineStore } from 'pinia';
|
|
import { getUserInfo, getUserName } from '@/apiRc/service';
|
|
|
|
export const useAuthUserStore = defineStore('auth-user', () => {
|
|
const token = ref('');
|
|
|
|
const userLoaded = ref(false);
|
|
|
|
const userInfoRef = ref({
|
|
userName: '',
|
|
professions: [],
|
|
skills: []
|
|
});
|
|
|
|
const fetchUserInfo = async () => {
|
|
const tokenA = await $getItem('tokenA');
|
|
const cryptogram = await $getItem('cryptogram');
|
|
if (!cryptogram) {
|
|
return;
|
|
}
|
|
token.value = cryptogram;
|
|
try {
|
|
const { code, msg, data } = await getUserInfo(cryptogram);
|
|
if (code !== 200) {
|
|
$emitter.emit('error-message', msg);
|
|
return;
|
|
}
|
|
if (!data) {
|
|
return;
|
|
}
|
|
userInfoRef.value.professions = data.jobTitles.map((d) => {
|
|
return {
|
|
label: d,
|
|
value: d
|
|
};
|
|
});
|
|
userInfoRef.value.skills = data.appSkillsList.map((d) => {
|
|
return {
|
|
label: d.name,
|
|
value: d.name
|
|
};
|
|
});
|
|
} catch (e) {
|
|
console.warn(e);
|
|
}
|
|
try {
|
|
const { code: c, msg: m, data: userName } = await getUserName({ accessToken: tokenA });
|
|
if (c !== 0 || !userName) {
|
|
$emitter.emit('error-message', m);
|
|
return;
|
|
}
|
|
userInfoRef.value.userName = userName.name;
|
|
userLoaded.value = true;
|
|
} catch (e) {
|
|
console.warn(e);
|
|
}
|
|
};
|
|
|
|
return {
|
|
token,
|
|
userInfo: userInfoRef,
|
|
userLoaded,
|
|
fetchUserInfo
|
|
};
|
|
});
|