view client/src/stores/usermanagement.js @ 379:0a9aaf21f69f

feat: usermanagement Togglable userdetails card
author Thomas Junk <thomas.junk@intevation.de>
date Fri, 10 Aug 2018 14:49:29 +0200
parents e42f42eb9353
children e7d5383bc358
line wrap: on
line source

import { HTTP } from "../lib/http";

const newUser = () => {
  return {
    user: "",
    email: "",
    country: null,
    role: null,
    isNew: true
  };
};

const UserManagement = {
  namespaced: true,
  state: {
    users: null,
    currentUser: null,
    userDetailsVisible: false
  },
  getters: {
    isUserDetailsVisible: state => {
      return state.userDetailsVisible;
    },
    currentUser: state => {
      return state.currentUser;
    },
    users: state => {
      return state.users;
    },
    getUserByName: state => name => {
      return state.users.find(user => {
        return user.user === name;
      });
    }
  },
  mutations: {
    setUserDetailsInvisible: state => {
      state.userDetailsVisible = false;
    },
    setUserDetailsVisible: state => {
      state.userDetailsVisible = true;
    },
    usersLoaded: (state, data) => {
      state.users = data.users;
    },
    setCurrentUser: (state, data) => {
      state.currentUser = data;
      state.userDetailsVisible = true;
    },
    clearCurrentUser: state => {
      state.currentUser = newUser();
    }
  },
  actions: {
    saveCurrentUser({ commit }, data) {
      const { path, user } = data;
      return new Promise((resolve, reject) => {
        HTTP.put("/users/" + path, user, {
          headers: { "X-Gemma-Auth": localStorage.getItem("token") }
        })
          .then(response => {
            commit("setUserDetailsInvisible");
            resolve(response);
          })
          .catch(error => {
            reject(error);
          });
      });
    },
    loadUsers({ commit }) {
      return new Promise((resolve, reject) => {
        HTTP.get("/users", {
          headers: { "X-Gemma-Auth": localStorage.getItem("token") }
        })
          .then(response => {
            commit("usersLoaded", response.data);
            resolve(response);
          })
          .catch(error => {
            reject(error);
          });
      });
    }
  }
};

export default UserManagement;