123 lines
3.9 KiB
TypeScript
123 lines
3.9 KiB
TypeScript
import axios from './axios';
|
|
|
|
// ----------------------------------------------------------------------
|
|
|
|
// const isValidToken = (accessToken: string) => {
|
|
// if (!accessToken) {
|
|
// return false;
|
|
// }
|
|
// const decoded = jwtDecode<{ exp: number }>(accessToken);
|
|
// const currentTime = Date.now() / 1000;
|
|
|
|
// return decoded.exp > currentTime;
|
|
// };
|
|
|
|
// const handleTokenExpired = () => {
|
|
// let expiredTimer;
|
|
|
|
// window.clearTimeout(expiredTimer);
|
|
// const currentTime = Date.now();
|
|
// const timeLeft = exp * 1000 - currentTime;
|
|
// console.log(timeLeft);
|
|
// expiredTimer = window.setTimeout(() => {
|
|
// console.log('expired');
|
|
// // You can do what ever you want here, like show a notification
|
|
// }, timeLeft);
|
|
// };
|
|
|
|
// let expiredCookie = 1/24/60; 1 menit
|
|
let expiredCookie = 12/24; //12 jam
|
|
|
|
const setCookie = (name:any, value:any, days:any) => {
|
|
let expires = "";
|
|
if (days) {
|
|
const date = new Date();
|
|
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
|
|
expires = "; expires=" + date.toUTCString();
|
|
}
|
|
document.cookie = name + "=" + decodeURIComponent(value || "") + expires + "; path=/; SameSite=Strict";
|
|
};
|
|
|
|
const setSession = (accessToken: string | null, rememberMe: boolean) => {
|
|
if (accessToken) {
|
|
const userString = getUser();
|
|
const storedUser = userString ? JSON.parse(userString) : null;
|
|
if(rememberMe)
|
|
{
|
|
localStorage.setItem('accessToken', accessToken);
|
|
}
|
|
else
|
|
{
|
|
setCookie('accessToken', accessToken, expiredCookie);
|
|
setCookie('rememberMe', 'OK', expiredCookie);
|
|
}
|
|
|
|
axios.defaults.headers.common.Authorization = `Bearer ${accessToken}`;
|
|
axios.defaults.headers.common['Accept-Language'] = localStorage.getItem('currentLocale') ?? 'id-ID';
|
|
axios.defaults.headers.common['Accept'] = 'application/json';
|
|
axios.defaults.headers.common['Content-Type'] = 'application/json';
|
|
axios.defaults.headers.common['Organization-id'] = storedUser?.organization_id;
|
|
// This function below will handle when token is expired
|
|
// const { exp } = jwtDecode(accessToken);
|
|
// handleTokenExpired(exp);
|
|
} else {
|
|
localStorage.removeItem('accessToken');
|
|
removeCookie('accessToken');
|
|
removeCookie('rememberMe');
|
|
delete axios.defaults.headers.common.Authorization;
|
|
delete axios.defaults.headers.common['Accept-Language'];
|
|
delete axios.defaults.headers.common['Accept'];
|
|
delete axios.defaults.headers.common['Content-Type'];
|
|
}
|
|
};
|
|
|
|
const setUser = (user: any, rememberMe: boolean) => {
|
|
if (user) {
|
|
if(rememberMe)
|
|
{
|
|
localStorage.setItem('user', JSON.stringify(user));
|
|
}
|
|
else
|
|
{
|
|
setCookie('user', JSON.stringify(user), expiredCookie);
|
|
setCookie('rememberMe', 'OK', expiredCookie);
|
|
}
|
|
|
|
} else {
|
|
localStorage.removeItem('user');
|
|
removeCookie('user');
|
|
removeCookie('rememberMe');
|
|
}
|
|
};
|
|
|
|
const getCookie = (name:any) => {
|
|
const cookies = document.cookie.split('; ');
|
|
for (let i = 0; i < cookies.length; i++) {
|
|
const cookiePair = cookies[i].split('=');
|
|
if (cookiePair[0] === name) {
|
|
return decodeURIComponent(cookiePair[1]);
|
|
}
|
|
}
|
|
return null;
|
|
};
|
|
|
|
const getSession = () => {
|
|
const localToken = window.localStorage.getItem('accessToken');
|
|
const cookieToken = getCookie('accessToken');
|
|
// Prioritaskan token dari localStorage
|
|
return localToken || cookieToken;
|
|
};
|
|
// const getUser = () => window.localStorage.getItem('user') || window.sessionStorage.getItem('user')
|
|
const getUser = () => {
|
|
const localUser = window.localStorage.getItem('user');
|
|
const cookieUser = getCookie('user');
|
|
|
|
// Prioritaskan token dari localStorage
|
|
return localUser || cookieUser;
|
|
};
|
|
const removeCookie = (name:any) => {
|
|
document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
|
|
};
|
|
|
|
export { setSession, getSession, setUser, getUser, getCookie };
|