salix-front/src/composables/useSession.js

74 lines
2.0 KiB
JavaScript
Raw Normal View History

2022-03-24 15:49:33 +00:00
import { useState } from './useState';
import { useRole } from './useRole';
import { useUserConfig } from './useUserConfig';
2022-03-24 15:49:33 +00:00
export function useSession() {
function getToken() {
const localToken = localStorage.getItem('token');
const sessionToken = sessionStorage.getItem('token');
return localToken || sessionToken || '';
}
function getTokenMultimedia() {
const localTokenMultimedia = localStorage.getItem('tokenMultimedia');
const sessionTokenMultimedia = sessionStorage.getItem('tokenMultimedia');
return localTokenMultimedia || sessionTokenMultimedia || '';
}
2022-03-24 15:49:33 +00:00
function setToken(data) {
if (data.keepLogin) {
localStorage.setItem('token', data.token);
localStorage.setItem('tokenMultimedia', data.tokenMultimedia);
2022-03-24 15:49:33 +00:00
} else {
sessionStorage.setItem('token', data.token);
sessionStorage.setItem('tokenMultimedia', data.tokenMultimedia);
2022-03-24 15:49:33 +00:00
}
}
function destroy() {
if (localStorage.getItem('token'))
localStorage.removeItem('token')
if (localStorage.getItem('tokenMultimedia'))
localStorage.removeItem('tokenMultimedia')
if (sessionStorage.getItem('token'))
sessionStorage.removeItem('token');
2022-03-24 15:49:33 +00:00
const { setUser } = useState();
setUser({
id: 0,
name: '',
2022-03-24 15:49:33 +00:00
nickname: '',
lang: '',
darkMode: null,
2022-03-24 15:49:33 +00:00
});
}
async function login(token, tokenMultimedia, keepLogin) {
setToken({ token, tokenMultimedia, keepLogin });
await useRole().fetch();
await useUserConfig().fetch();
}
2022-03-24 15:49:33 +00:00
function isLoggedIn() {
const localToken = localStorage.getItem('token');
const sessionToken = sessionStorage.getItem('token');
return !!(localToken || sessionToken);
}
return {
getToken,
getTokenMultimedia,
2022-03-24 15:49:33 +00:00
setToken,
destroy,
login,
2022-03-24 15:49:33 +00:00
isLoggedIn,
};
}