From f83823fc957a4200faa0d1eca702c1f1fa1d0093 Mon Sep 17 00:00:00 2001
From: V S Tharunika <1vstharu279@gmail.com>
Date: Sun, 3 Jan 2021 16:01:58 +0530
Subject: [PATCH] rectifying errors

---
 book-racker/src/components/Header.vue   |  4 +--
 book-racker/src/components/Login.vue    |  6 +++--
 book-racker/src/components/Register.vue |  4 ++-
 book-racker/src/main.js                 |  5 ++++
 book-racker/src/store/store.js          | 35 +++++++++++++++++++++++++
 5 files changed, 49 insertions(+), 5 deletions(-)
 create mode 100644 book-racker/src/store/store.js

diff --git a/book-racker/src/components/Header.vue b/book-racker/src/components/Header.vue
index aeec67e5..db4c6853 100644
--- a/book-racker/src/components/Header.vue
+++ b/book-racker/src/components/Header.vue
@@ -23,7 +23,7 @@
 
     <v-toolbar-items style="padding-top: 50px;padding-bottom: 20px;padding-right: 20px;">
         <router-link to="register">
-            <v-btn >
+            <v-btn v-if="!$store.state.isUserLoggedIn">
               Sign Up
             </v-btn>
         </router-link>
@@ -31,7 +31,7 @@
 
     <v-toolbar-items style="padding-top: 50px;padding-bottom: 20px;">
         <router-link to="login">
-            <v-btn>
+            <v-btn v-if="!$store.state.isUserLoggedIn">
                Log In
             </v-btn>
         </router-link>
diff --git a/book-racker/src/components/Login.vue b/book-racker/src/components/Login.vue
index 423270bb..223ebb43 100644
--- a/book-racker/src/components/Login.vue
+++ b/book-racker/src/components/Login.vue
@@ -33,11 +33,13 @@ export default {
   methods: {
     async login () {
       try {
-        await AuthentiacationService.login({
+        const response = await AuthentiacationService.login({
           email: this.email,
           password: this.password
         })
-      } catch (error) {
+        this.$store.dispatch('setToken', response.data.token)
+        this.$store.dispatch('setUser', response.data.user)
+      }  catch (error) {
         this.error = error.response.data.error
       }
     }
diff --git a/book-racker/src/components/Register.vue b/book-racker/src/components/Register.vue
index 3311dcf6..04388134 100644
--- a/book-racker/src/components/Register.vue
+++ b/book-racker/src/components/Register.vue
@@ -35,10 +35,12 @@ export default {
   methods: {
     async register () {
       try {
-        await AuthentiacationService.register({
+        const response = await AuthentiacationService.register({
           email: this.email,
           password: this.password
         })
+        this.$store.dispatch('setToken', response.data.token)
+        this.$store.dispatch('setUser', response.data.user)
       } catch (error) {
         this.error = error.response.data.error
       }
diff --git a/book-racker/src/main.js b/book-racker/src/main.js
index fc247db3..32096e0f 100644
--- a/book-racker/src/main.js
+++ b/book-racker/src/main.js
@@ -4,16 +4,21 @@ import Vue from 'vue'
 import App from './App'
 import router from './router'
 import Vuetify from 'vuetify'
+import { sync } from 'vuex-router-sync'
 import 'vuetify/dist/vuetify.min.css'
+import store from '@/store/store'
 
 Vue.config.productionTip = false
 
 Vue.use(Vuetify)
 
+sync(store, router)
+
 /* eslint-disable no-new */
 new Vue({
   el: '#app',
   router,
+  store,
   components: { App },
   template: '<App/>'
 })
diff --git a/book-racker/src/store/store.js b/book-racker/src/store/store.js
new file mode 100644
index 00000000..2015d476
--- /dev/null
+++ b/book-racker/src/store/store.js
@@ -0,0 +1,35 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+
+Vue.use(Vuex)
+
+export default new Vuex.Store({
+    strict: true,
+    state: {
+        token: null,
+        user: null,
+        isUserLoggedIn: false
+    },
+    mutations: {
+        setToken (state, token) {
+            state.token = token
+            if (token) {
+                state.isUserLoggedIn = true
+            } else {
+                state.isUserLoggedIn = false
+            }
+        },
+        setUser (state, user) {
+            state.user = user
+        }
+
+    },
+    actions: {
+        setToken({commit}, token) {
+            commit('setToken', token)
+        },
+        setUser({commit}, user) {
+            commit('setUser', user)
+        }
+    }
+})
-- 
GitLab