From 3bb38b795c7431ce9c76f24a838d64797b8e2302 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Tue, 13 Nov 2018 22:55:22 +0000 Subject: [PATCH] --- app/ayanova/src/api/apiutil.js | 4 ++-- app/ayanova/src/store.js | 5 ++++- app/ayanova/src/utils/authutil.js | 32 ++++--------------------------- devdocs/todo.txt | 7 +++---- 4 files changed, 13 insertions(+), 35 deletions(-) diff --git a/app/ayanova/src/api/apiutil.js b/app/ayanova/src/api/apiutil.js index 8376fd1e..25ae6e8c 100644 --- a/app/ayanova/src/api/apiutil.js +++ b/app/ayanova/src/api/apiutil.js @@ -1,5 +1,5 @@ import logger from "../utils/logit"; -import { getToken } from "../utils/authutil"; +import store from "../store"; export default { status(response) { @@ -17,7 +17,7 @@ export default { return { Accept: "application/json, text/plain, */*", "Content-Type": "application/json", - Authorization: "Bearer " + getToken() + Authorization: "Bearer " + store.state.apiToken }; } }; diff --git a/app/ayanova/src/store.js b/app/ayanova/src/store.js index 41598fab..b8355e7f 100644 --- a/app/ayanova/src/store.js +++ b/app/ayanova/src/store.js @@ -9,6 +9,7 @@ export default new Vuex.Store({ state: { authenticated: false, apiUrl: "http://localhost:7575/api/v8.0/", + apiToken: "NOT-AUTHENTICATED", userId: 0, roles: 0, localeText: {}, @@ -20,13 +21,15 @@ export default new Vuex.Store({ state.authenticated = data.authenticated; state.userId = data.userId; state.roles = data.roles; + state.apiToken = data.apiToken; }, logout(state) { + state.apiToken = "NOT-AUTHENTICATED"; state.authenticated = false; state.userId = 0; state.roles = 0; state.navItems = []; - state.localeText = []; + state.localeText = {}; }, addNavItem(state, data) { state.navItems.push(data); diff --git a/app/ayanova/src/utils/authutil.js b/app/ayanova/src/utils/authutil.js index 4f5045e0..78164535 100644 --- a/app/ayanova/src/utils/authutil.js +++ b/app/ayanova/src/utils/authutil.js @@ -1,15 +1,8 @@ import decode from "jwt-decode"; -import config from "./config"; import logger from "./logit"; import store from "../store"; import initialize from "./initialize"; -//import axios from 'axios'; -//import auth0 from 'auth0-js'; -//import Router from 'vue-router'; -//import Auth0Lock from 'auth0-lock'; -const TOKEN_KEY = "apitoken"; - export function processLogin(response) { //is token present? if (!response || !response.data || !response.data.token) { @@ -28,11 +21,9 @@ export function processLogin(response) { return Promise.reject(); } - //Token is valid, store it in session storage - setToken(response.data.token); - //Put app relevant items into vuex store so app can use them - store.commit("setAuthentication", { + store.commit("login", { + apiToken: response.data.token, authenticated: true, userId: Number(token.id), roles: token["ayanova/roles"] @@ -47,27 +38,12 @@ export function processLogin(response) { export function processLogout() { logger.log("Logout"); - store.commit("clearAuthentication"); - clearToken(); - //router.go('/'); -} - -export function getToken() { - return sessionStorage.getItem(TOKEN_KEY); -} - -function clearToken() { - sessionStorage.removeItem(TOKEN_KEY); -} - -// Get and store token in local storage -export function setToken(token) { - sessionStorage.setItem(TOKEN_KEY, token); + store.commit("logout"); } export function isLoggedIn() { //const token = getToken(); - return !!config.apiToken && !isTokenExpired(config.apiToken); + return !!store.state.apiToken && !isTokenExpired(store.state.apiToken); } function getTokenExpirationDate(encodedToken) { diff --git a/devdocs/todo.txt b/devdocs/todo.txt index eea31a31..09bf7ab3 100644 --- a/devdocs/todo.txt +++ b/devdocs/todo.txt @@ -31,10 +31,9 @@ WEEK OF 2018-11-12 - RAVEN shell start work. YAY! NEXT UP / CURRENTLY WORKING ON: - - - lookup naming guidelines for javascript functions (capitalized?) and fixup the code and stick to it. - - Look over the (now two) api calls and look for optimization and code shrinkage / de-duplication - - Handle refresh with session storage and how to rehydrate stuff + + - Look over the (now two) api calls and look for optimization and code shrinkage / de-duplication + - apiurl handling - Move on to the next thing (build and post?)