view client/src/stores/usermanagement.js @ 376:e42f42eb9353

refactor: Userdetails refactored to card model Primitive user editing etd.
author Thomas Junk <thomas.junk@intevation.de>
date Fri, 10 Aug 2018 13:15:32 +0200
parents 7e7e978d1cac
children 0a9aaf21f69f
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
  },
  getters: {
    currentUser: state => {
      return state.currentUser;
    },
    users: state => {
      return state.users;
    },
    getUserByName: state => name => {
      return state.users.find(user => {
        return user.user === name;
      });
    }
  },
  mutations: {
    usersLoaded: (state, data) => {
      state.users = data.users;
    },
    setCurrentUser: (state, data) => {
      state.currentUser = data;
    },
    clearCurrentUser: state => {
      state.currentUser = newUser();
    }
  },
  actions: {
    saveCurrentUser({ commit }, data) {
      console.log(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("usersLoaded", response.data);
            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;