diff --git a/services/request/package.json b/services/request/package.json index 4521828..a81e2f4 100644 --- a/services/request/package.json +++ b/services/request/package.json @@ -34,6 +34,7 @@ "vue": "^3.0.5", "vue-router": "^4.0.6", "vuedraggable": "^4.0.1", + "vuex": "^4.0.0", "websocket": "^1.0.33" }, "devDependencies": { diff --git a/services/request/src/app/App.vue b/services/request/src/app/App.vue index f24d015..b9faf7c 100644 --- a/services/request/src/app/App.vue +++ b/services/request/src/app/App.vue @@ -6,11 +6,12 @@ diff --git a/services/request/src/app/auth.ts b/services/request/src/app/auth.ts deleted file mode 100644 index 67bf47c..0000000 --- a/services/request/src/app/auth.ts +++ /dev/null @@ -1,111 +0,0 @@ -import jwtDecode from "jwt-decode"; -import router from "./routes"; - -export interface IUser { - id: number, - name: string, - isAdmin: boolean -} - -/** - * The active JWT - */ -let token: string | null; - -/** - * The decoded user object - */ -let user: IUser | null; - -/** - * Check if the user is an admin - */ -export function isAdmin() { - return user && user.isAdmin; -} - -/** - * Check if the client is authenticated - */ -export function isAuthenticated() { - return Boolean(token); -} - -/** - * Get the logged in user (assumes authentication has been checked) - */ -export function getUser() { - return user; -} - -/** - * Load the token from local storage - */ -export function loadToken() { - try { - token = localStorage.getItem("jwt"); - user = jwtDecode(token); - } catch(e) { - console.log("Failed to load token"); - token = null; - user = null; - return false; - } - console.log("Token loaded", token); - return true; -} - -/** - * Delete the token from local storage - */ -export function forgetToken() { - token = null; - user = null; - localStorage.removeItem("jwt"); -} - -/** - * Store a JWT token in local storage - */ -export function storeToken(jwtToken: string) { - try { - user = jwtDecode(jwtToken); - token = jwtToken; - localStorage.setItem("jwt", jwtToken); - } catch(e) { - user = null; - token = null; - return false; - } - return true; -} - -/** - * Fetch request providing authentication and logout upon unauthorized requests - */ - export async function authFetch(path: string, options: RequestInit = {}): Promise { - console.log("Performing auth fetch"); - options.credentials = "include"; - options.headers = Object.assign(options.headers ?? {}, { - "Authorization": `Bearer ${token}` - }); - let response = await fetch(path, options); - if (response.status === 401) { - // forgetToken(); - console.log("Forgetting token..."); - router.push({ name: "Login" }); - throw Error("Unauthorized"); - } - return response; -} - -/** - * @TODO Remove later - */ -(window).forgetToken = forgetToken; -(window).authFetch = authFetch; - -/** - * Ensure the token is loaded upon startup - */ -loadToken(); diff --git a/services/request/src/app/components/CheckBox.vue b/services/request/src/app/components/CheckBox.vue index 304eb92..c917e62 100644 --- a/services/request/src/app/components/CheckBox.vue +++ b/services/request/src/app/components/CheckBox.vue @@ -1,6 +1,6 @@