- Implemented store and logged states

This commit is contained in:
Alexis
2020-07-06 21:22:03 +02:00
parent 27ab62e36f
commit 9b10cd473e
6 changed files with 68 additions and 6 deletions

View File

@@ -12073,6 +12073,11 @@
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
"dev": true "dev": true
}, },
"vuex": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/vuex/-/vuex-3.5.1.tgz",
"integrity": "sha512-w7oJzmHQs0FM9LXodfskhw9wgKBiaB+totOdb8sNzbTB2KDCEEwEs29NzBZFh/lmEK1t5tDmM1vtsO7ubG1DFw=="
},
"watchpack": { "watchpack": {
"version": "1.7.2", "version": "1.7.2",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz",

View File

@@ -36,7 +36,8 @@
"v-clipboard": "^2.2.3", "v-clipboard": "^2.2.3",
"vue": "^2.6.11", "vue": "^2.6.11",
"vue-cookies": "^1.7.0", "vue-cookies": "^1.7.0",
"vue-masonry": "^0.11.8" "vue-masonry": "^0.11.8",
"vuex": "^3.5.1"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "~4.2.0", "@vue/cli-plugin-babel": "~4.2.0",

View File

@@ -51,6 +51,11 @@ hr {
border-top-color: rgba($black, .25); border-top-color: rgba($black, .25);
} }
// BOOTSTRAP
.nav-link {
cursor: pointer;
}
// LAYOUTS // LAYOUTS
.fullpage { .fullpage {
min-height: calc(100vh - 56px); min-height: calc(100vh - 56px);

View File

@@ -10,9 +10,9 @@
<router-link :to="link.url" class="nav-link">{{ link.text }}</router-link> <router-link :to="link.url" class="nav-link">{{ link.text }}</router-link>
</li> </li>
</ul> </ul>
<div class="navbar-nav" v-if="user"> <div class="navbar-nav" v-if="loggedIn">
<router-link :to="'/profil'" class="nav-link">Profil</router-link> <router-link :to="'/profil'" class="nav-link">Profil</router-link>
<router-link :to="'/deconnexion'" class="nav-link">Deconnexion</router-link> <div @click="logoutUser()" class="nav-link">Deconnexion</div>
</div> </div>
<div class="navbar-nav" v-else> <div class="navbar-nav" v-else>
<router-link :to="'/inscription'" class="nav-link">S'inscrire</router-link> <router-link :to="'/inscription'" class="nav-link">S'inscrire</router-link>
@@ -27,7 +27,6 @@
name: 'navbar', name: 'navbar',
data() { data() {
return { return {
user: this.$cookies.get("U_"),
links: [ links: [
{ {
text: 'Sortilèges', text: 'Sortilèges',
@@ -39,6 +38,20 @@
} }
] ]
} }
},
computed: {
loggedIn() {
return this.$store.state.status.loggedIn;
}
},
methods: {
logoutUser() {
if (this.$cookies.get('U_') != null) {
this.$cookies.remove('U_')
this.$store.commit('logout')
this.$router.push('/')
}
}
} }
} }
</script> </script>

View File

@@ -1,5 +1,6 @@
// Core // Core
import Vue from 'vue' import Vue from 'vue'
import Vuex from 'vuex'
import VueRouter from 'vue-router' import VueRouter from 'vue-router'
import App from './app.vue' import App from './app.vue'
@@ -51,9 +52,42 @@ Vue.filter('truncate', filter)
import router from './routes' import router from './routes'
Vue.use(VueRouter) Vue.use(VueRouter)
// Store
Vue.use(Vuex)
let user = Vue.$cookies.get('U_')
const store = new Vuex.Store({
state: user ?
{ status: { loggedIn: true }, user }
: { status: { loggedIn: false }, user: null },
mutations: {
loginSucceed (state, user) {
state.status.loggedIn = true
state.user = user
},
loginFail (state) {
state.status.loggedIn = false
state.user = null
},
logout(state) {
state.status.loggedIn = false;
state.user = null;
},
registerSucceed (state, user) {
state.status.loggedIn = true
state.user = user
},
registerFail (state) {
state.status.loggedIn = false
state.user = null
},
}
})
// Mount Vue // Mount Vue
const app = new Vue({ const app = new Vue({
render: h => h(App), render: h => h(App),
router router,
store: store
}) })
app.$mount('#srs') app.$mount('#srs')

View File

@@ -52,9 +52,13 @@ export default {
"password": this.password "password": this.password
}) })
.then(v => { .then(v => {
this.$cookies.set("U_", v.data.user, 60 * 60 * 24 * 30) let user = v.data.user
this.$cookies.set("U_", user, 60 * 60 * 24 * 30)
this.$store.commit('loginSucceed', user)
this.$router.push('/profil')
}) })
.catch(err => { .catch(err => {
this.$store.commit('loginFailed')
console.log(err) console.log(err)
}) })
} }