diff options
| author | Georgios Andreadis <g.andreadis@student.tudelft.nl> | 2017-08-11 14:48:42 +0300 |
|---|---|---|
| committer | Georgios Andreadis <g.andreadis@student.tudelft.nl> | 2017-09-23 10:05:37 +0200 |
| commit | d7512ace72448242b392299cf459c9c72c8dbee5 (patch) | |
| tree | 37ce113d5d47440139bfe357e9ad547063cd44f7 /src/auth/index.js | |
| parent | 737ce62470a13ae153788207719396e107252955 (diff) | |
Get Google authentication flow working
Diffstat (limited to 'src/auth/index.js')
| -rw-r--r-- | src/auth/index.js | 55 |
1 files changed, 55 insertions, 0 deletions
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); +}; |
