view client/src/components/Sidebar.vue @ 160:061209505028

feat: Login and logout with session restoration implemented Login information stored in local storage for restoration after browser restart. If a non expired session is found, it is restored before entering the main area. Username and logout are located in the lower sidebar.
author Thomas Junk <thomas.junk@intevation.de>
date Wed, 04 Jul 2018 17:21:10 +0200
parents 992e17912405
children b7ac2e4f9c5c
line wrap: on
line source

<template>
  <div class="sidebar">
    <nav class="nav flex-column">
      <a class="nav-link active" href="#">Active</a>
      <a class="nav-link" href="#">Link</a>
      <a class="nav-link" href="#">Link</a>
      <a class="nav-link disabled" href="#">Disabled</a>
    </nav>
    <div class="user d-flex justify-content-center">
      <div class="userinfo">
      {{ userinfo }}
    </div>
    <div class="logout">
      <span @click="logoff"><i class="fa fa-power-off"></i></span>
    </div>
    </div>
  </div>
</template>

<script>
import { mapGetters } from "vuex";

export default {
  name: "sidebar",
  computed: {
    ...mapGetters("user", ["userinfo"]),
    sidebarStyle() {
      return {
        sidebarcollapsed: this.collapsed,
        sidebarextended: this.collapsed
      };
    }
  },
  methods: {
    logoff() {
      this.$store.commit("user/clear_auth");
      this.$router.push("/login");
    }
  },
  data() {
    return {
      collapsed: false
    };
  }
};
</script>

<style lang="scss">
@import "../assets/application.scss";

$sidebar-full-width: 150px;

$sidebar-collapsed-width: 80px;

.sidebar {
  padding-top: $large-offset;
}

.sidebarcollapsed {
  width: $sidebar-collapsed-width;
}

.sidebarextended {
  width: $sidebar-full-width;
}

.user {
  position: absolute;
  left: 0;
  bottom: $large-offset;
  width: 90px;
}

.userinfo {
  font-weight: bold;
}

.logout {
  margin-left: $small-offset;
}
</style>