From 88e409283a3e4f2d58c0fedf4f5be67622e74a95 Mon Sep 17 00:00:00 2001 From: Gilgard <Hjelljord.alida@gmail.com> Date: Mon, 25 Apr 2022 10:57:45 +0200 Subject: [PATCH] Communication with backend and reroute to login --- package-lock.json | 13 ++++++++++++- package.json | 3 ++- src/main.js | 4 ++-- src/router/index.js | 10 +++++++--- src/utils/apiutil.js | 40 ++++++++++++++++++++++++++++++++++++++++ src/utils/token-utils.js | 13 +++++++++++++ 6 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 src/utils/token-utils.js diff --git a/package-lock.json b/package-lock.json index 6c90cbd..9da0cba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,13 +14,14 @@ "axios": "^0.26.1", "core-js": "^3.8.3", "cssom": "^0.5.0", + "jwt-decode": "^3.1.2", "roboto-fontface": "*", "vue": "^3.2.13", "vue-router": "^4.0.3", "vuelidate": "^0.7.7", "vuex": "^4.0.0", "vuex-persistedstate": "^4.1.0", - "webfontloader": "^1.0.0" + "webfontloader": "^1.6.28" }, "devDependencies": { "@babel/core": "^7.12.16", @@ -11056,6 +11057,11 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + }, "node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -24449,6 +24455,11 @@ "universalify": "^2.0.0" } }, + "jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", diff --git a/package.json b/package.json index fe4e818..672d5e1 100644 --- a/package.json +++ b/package.json @@ -15,13 +15,14 @@ "axios": "^0.26.1", "core-js": "^3.8.3", "cssom": "^0.5.0", + "jwt-decode": "^3.1.2", "roboto-fontface": "*", "vue": "^3.2.13", "vue-router": "^4.0.3", "vuelidate": "^0.7.7", "vuex": "^4.0.0", "vuex-persistedstate": "^4.1.0", - "webfontloader": "^1.0.0" + "webfontloader": "^1.6.28" }, "devDependencies": { "@babel/core": "^7.12.16", diff --git a/src/main.js b/src/main.js index 34900f2..487613b 100644 --- a/src/main.js +++ b/src/main.js @@ -2,9 +2,9 @@ import { createApp } from "vue"; import App from "./App.vue"; import router from "./router"; import store from "./store"; -import { loadFonts } from "./plugins/webfontloader"; import "./index.css"; +//import { loadFonts } from "webfontloader"; -loadFonts(); +//loadFonts(); createApp(App).use(router).use(store).mount("#app"); diff --git a/src/router/index.js b/src/router/index.js index 09ae8cd..5096f88 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,10 +1,11 @@ +import store from "@/store"; import { createRouter, createWebHistory } from "vue-router"; import HomeView from "../views/HomeView.vue"; import LoginView from "../views/LoginView.vue"; const routes = [ { - path: "/endre", //Endre før push + path: "/", //Endre før push name: "home", component: HomeView, }, @@ -14,9 +15,12 @@ const routes = [ component: () => import("../views/AboutView.vue"), }, { - path: "/profile", + path: "/profile/:id", name: "profile", component: () => import("../views/ProfileView.vue"), + beforeEnter: () => { + if (store.state.user.token == null) router.push("login"); + }, }, { path: "/register", @@ -28,7 +32,7 @@ const routes = [ import(/* webpackChunkName: "register" */ "../views/RegisterView.vue"), }, { - path: "/", + path: "/login", name: "login", component: LoginView, }, diff --git a/src/utils/apiutil.js b/src/utils/apiutil.js index 773bd8d..8338431 100644 --- a/src/utils/apiutil.js +++ b/src/utils/apiutil.js @@ -1,4 +1,5 @@ import axios from "axios"; +import { tokenHeader } from "./token-utils"; export function doLogin(loginRequest) { return axios @@ -7,3 +8,42 @@ export function doLogin(loginRequest) { return response.data; }); } + +export function getUser(userid) { + return axios + .get(`http://65.108.62.223:3000/api/user/` + userid, { + headers: tokenHeader(), + }) + .then((response) => { + return response.data; + }) + .catch((error) => { + console.error(error); + }); +} + +export function getRenterRating(userid) { + return axios + .get(`http://65.108.62.223:3000/api/user/renter-rating/` + userid, { + headers: tokenHeader(), + }) + .then((response) => { + return response.data; + }) + .catch((error) => { + console.error(error); + }); +} + +export function getOwnerRating(userid) { + return axios + .get(`http://65.108.62.223:3000/api/user/owner-rating/` + userid, { + headers: tokenHeader(), + }) + .then((response) => { + return response.data; + }) + .catch((error) => { + console.error(error); + }); +} diff --git a/src/utils/token-utils.js b/src/utils/token-utils.js new file mode 100644 index 0000000..063ddf6 --- /dev/null +++ b/src/utils/token-utils.js @@ -0,0 +1,13 @@ +import jwt_decode from "jwt-decode"; +import store from "@/store"; + +export function tokenHeader() { + let token = store.state.user.token; + return { Authorization: token }; +} + +export function parseUserFromToken() { + let token = store.state.user.token; + console.log(token); + return jwt_decode(); +} -- GitLab