+
+
Connexion
+
+
+
+
+
diff --git a/hn-vue/src/plugins/Notifications.js b/hn-vue/src/plugins/Notifications.js
index cfd5ec8..8c46935 100644
--- a/hn-vue/src/plugins/Notifications.js
+++ b/hn-vue/src/plugins/Notifications.js
@@ -1,7 +1,7 @@
export default {
install(Vue) {
Vue.prototype.$message = function(message) {
- this.$store.dispatch("addMessage", message);
+ this.$store.dispatch("notification/addMessage", message);
};
Vue.prototype.$redirectWithMessage = function(to, message) {
diff --git a/hn-vue/src/router.js b/hn-vue/src/router.js
index 92593d8..f3095ef 100644
--- a/hn-vue/src/router.js
+++ b/hn-vue/src/router.js
@@ -2,6 +2,7 @@ import Vue from "vue";
import VueRouter from "vue-router";
import Links from "./pages/Links.vue";
import Register from "./pages/Register.vue";
+import Login from "./pages/Login.vue";
import LinkDetail from "./pages/LinkDetail.vue";
Vue.use(VueRouter);
@@ -17,6 +18,7 @@ export default function createRouter() {
props: true,
},
{ path: "/register", name: "register", component: Register },
+ { path: "/login", name: "login", component: Login },
{ path: "*", redirect: "/" },
],
});
diff --git a/hn-vue/src/store.js b/hn-vue/src/store.js
index f839a2e..f1f9368 100644
--- a/hn-vue/src/store.js
+++ b/hn-vue/src/store.js
@@ -1,27 +1,58 @@
import Vue from "vue";
import Vuex from "vuex";
+import createPersistedState from "vuex-persistedstate";
+import api from "./api";
Vue.use(Vuex);
export default function createStore() {
return new Vuex.Store({
- state: {
- messages: [],
- },
- mutations: {
- pushMessage(state, message) {
- state.messages = [...state.messages, message];
- },
- removeMessage(state, message) {
- state.messages = state.messages.filter((m) => m !== message);
- },
- },
- actions: {
- addMessage({ commit }, message) {
- commit("pushMessage", message);
+ modules: {
+ notification: {
+ namespaced: true,
+ state: {
+ messages: [],
+ },
+ mutations: {
+ pushMessage(state, message) {
+ state.messages = [...state.messages, message];
+ },
+ removeMessage(state, message) {
+ state.messages = state.messages.filter((m) => m !== message);
+ },
+ },
+ actions: {
+ addMessage({ commit }, message) {
+ commit("pushMessage", message);
- setTimeout(() => commit("removeMessage", message), 3000);
+ setTimeout(() => commit("removeMessage", message), 3000);
+ },
+ },
+ },
+ auth: {
+ namespaced: true,
+ state: {
+ token: null,
+ username: null,
+ },
+ mutations: {
+ setUser(state, { token, username }) {
+ state.token = token;
+ state.username = username;
+ },
+ },
+ actions: {
+ async login({ commit }, data) {
+ const result = await api.login(data);
+ commit("setUser", result);
+ },
+ },
},
},
+ plugins: [
+ createPersistedState({
+ paths: ["auth"],
+ }),
+ ],
});
}