added login, first preparation for menu

This commit is contained in:
Torsten Schulz
2024-07-21 13:09:56 +02:00
parent bbf4a2deb3
commit 597761cb15
10 changed files with 391 additions and 100 deletions

View File

@@ -1,11 +1,13 @@
import { createStore } from 'vuex';
import dialogs from './modules/dialogs';
import loadMenu from '../utils/menuLoader.js';
const store = createStore({
state: {
isLoggedIn: false,
user: null,
language: navigator.language.startsWith('de') ? 'de' : 'en',
menu: [],
},
mutations: {
dologin(state, user) {
@@ -13,6 +15,7 @@ const store = createStore({
state.user = user;
localStorage.setItem('isLoggedIn', 'true');
localStorage.setItem('user', JSON.stringify(user));
console.log(state.user);
},
dologout(state) {
state.isLoggedIn = false;
@@ -23,9 +26,9 @@ const store = createStore({
loadLoginState(state) {
const isLoggedIn = localStorage.getItem('isLoggedIn') === 'true';
let userData = {};
try {
try {
userData = localStorage.getItem('user') ? JSON.parse(localStorage.getItem('user')) : {};
} catch(e) {
} catch (e) {
}
const user = userData;
@@ -34,11 +37,16 @@ const store = createStore({
},
setLanguage(state, language) {
state.language = language;
},
setMenu(state, menu) {
state.menu = menu;
}
},
actions: {
login({ commit }, user) {
async login({ commit, dispatch }, user) { // Dispatch hinzufügen
commit('dologin', user);
await dispatch('loadMenu'); // Korrekte Verwendung von dispatch
dispatch('startMenuReload');
},
logout({ commit }) {
commit('dologout');
@@ -49,11 +57,26 @@ const store = createStore({
setLanguage({ commit }, language) {
commit('setLanguage', language);
},
async loadMenu({ commit }) {
try {
const menu = await loadMenu();
commit('setMenu', menu);
} catch (err) {
console.error(err);
commit('setMenu', []);
}
},
startMenuReload({ dispatch }) {
setInterval(() => {
dispatch('loadMenu');
}, 5000);
},
},
getters: {
isLoggedIn: state => state.isLoggedIn,
user: state => state.user,
language: state => state.language,
menu: state => state.menu,
},
modules: {
dialogs,