import {LOG_IN_SUCCEEDED, LOG_OUT} from "../actions/auth"; import {DELETE_CURRENT_USER_SUCCEEDED} from "../actions/users"; const getAuthObject = () => { const authItem = localStorage.getItem("auth"); if (!authItem || authItem === "{}") { return undefined; } return JSON.parse(authItem); }; export const userIsLoggedIn = () => { const authObj = getAuthObject(); if (!authObj || !authObj.googleId) { return false; } const currentTime = (new Date()).getTime(); return parseInt(authObj.expiresAt, 10) - currentTime > 0; }; export const getAuthToken = () => { const authObj = getAuthObject(); if (!authObj) { return undefined; } return authObj.authToken; }; export const saveAuthLocalStorage = (payload) => { localStorage.setItem("auth", JSON.stringify(payload)); }; export const clearAuthLocalStorage = () => { localStorage.setItem("auth", ""); }; export const authRedirectMiddleware = store => next => action => { switch (action.type) { case LOG_IN_SUCCEEDED: saveAuthLocalStorage(action.payload); window.location.href = "/simulations"; break; case LOG_OUT: case DELETE_CURRENT_USER_SUCCEEDED: clearAuthLocalStorage(); window.location.href = "/"; break; default: next(action); return; } next(action); };