From d7512ace72448242b392299cf459c9c72c8dbee5 Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Fri, 11 Aug 2017 14:48:42 +0300 Subject: Get Google authentication flow working --- src/auth/index.js | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/auth/index.js (limited to 'src/auth/index.js') diff --git a/src/auth/index.js b/src/auth/index.js new file mode 100644 index 00000000..5ea24ff9 --- /dev/null +++ b/src/auth/index.js @@ -0,0 +1,55 @@ +import {COMPLETE_LOGIN, LOG_OUT} from "../actions/auth"; + +const getAuthObject = () => { + const authItem = localStorage.getItem("auth"); + if (!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 COMPLETE_LOGIN: + saveAuthLocalStorage(action.payload); + window.location.href = "/projects"; + break; + case LOG_OUT: + clearAuthLocalStorage(); + window.location.href = "/"; + break; + default: + next(action); + return; + } + + next(action); +}; -- cgit v1.2.3