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