diff --git a/book-racker/src/components/Header.vue b/book-racker/src/components/Header.vue index aeec67e50ca919dc67236429e502b9f11c7b6574..db4c68530817af3144e42ad1f3977ec3db4f75cc 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 423270bb3ba6e3651857f4745b675affbb47fccb..223ebb4332726f5ce6d59a7b76f8cfad6685a3a7 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 3311dcf6d01dd588180a1061a868ece56f55755a..0438813440ea953b5f3583d151c985a2cfebb011 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 fc247db3b6373160f7bf594d9fdbb5df5af437a8..32096e0f2fa61be42ef5a41d7d6e3947a334507a 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 0000000000000000000000000000000000000000..2015d47649c32b30e093391b8142d6f2eb72438d --- /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) + } + } +})