import { useState } from './useState'; import { useRole } from './useRole'; import { useUserConfig } from './useUserConfig'; import axios from 'axios'; 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 || ''; } function setToken(data) { if (data.keepLogin) { localStorage.setItem('token', data.token); localStorage.setItem('tokenMultimedia', data.tokenMultimedia); } else { sessionStorage.setItem('token', data.token); sessionStorage.setItem('tokenMultimedia', data.tokenMultimedia); } } async function destroy() { if (localStorage.getItem('tokenMultimedia')){ await axios.post('VnUsers/logoutMultimedia', null, { headers: {Authorization: localStorage.getItem('tokenMultimedia') } }); localStorage.removeItem('tokenMultimedia') } if (localStorage.getItem('token')){ await axios.post('VnUsers/logout', null, { headers: {Authorization: localStorage.getItem('token') } }); localStorage.removeItem('token') } if (sessionStorage.getItem('tokenMultimedia')){ await axios.post('VnUsers/logoutMultimedia', null, { headers: {Authorization: sessionStorage.getItem('tokenMultimedia') } }); sessionStorage.removeItem('tokenMultimedia') } if (sessionStorage.getItem('token')){ await axios.post('VnUsers/logout', null, { headers: {Authorization: sessionStorage.getItem('token') } }); sessionStorage.removeItem('token') } const { setUser } = useState(); setUser({ id: 0, name: '', nickname: '', lang: '', darkMode: null, }); } async function login(token, tokenMultimedia, keepLogin) { setToken({ token, tokenMultimedia, keepLogin }); await useRole().fetch(); await useUserConfig().fetch(); } function isLoggedIn() { const localToken = localStorage.getItem('token'); const sessionToken = sessionStorage.getItem('token'); return !!(localToken || sessionToken); } return { getToken, getTokenMultimedia, setToken, destroy, login, isLoggedIn, }; }