97 lines
2.8 KiB
JavaScript
97 lines
2.8 KiB
JavaScript
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,
|
|
};
|
|
}
|