summaryrefslogtreecommitdiff
path: root/src/auth
diff options
context:
space:
mode:
Diffstat (limited to 'src/auth')
-rw-r--r--src/auth/index.js55
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);
+};