diff --git a/package-lock.json b/package-lock.json index 6c90cbdf471980e235f8a00ec59d5448b42f5298..9da0cba38a9bcf9601a35068f988c40622fe2262 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 fe4e8182e70eaa9150b6c4bd6aa9e414408ee7a9..672d5e1fb9ed85277e62882974bc953e0fdaaeb5 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 34900f2ef3e7361998cbdee5516fd55fcd5c3ff7..487613b47d3535eb433800838715349e3bf57487 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 09ae8cd1aa3455903a67fbf55097a3b4c68c71de..5096f881a4c2dd7bc9445d2af4818c43c525533c 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 773bd8d67e484a1f42d371339b5a46ce757a9347..83384310085e842c23a12a8f39594443801b2ca4 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 0000000000000000000000000000000000000000..063ddf605565233f03b667723fe0ecb935d651c8 --- /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(); +}