Create LocalUserManagement view directory

Signed-off-by: Yoshie Muranaka <yoshiemuranaka@gmail.com>
Signed-off-by: Derick Montague <derick.montague@ibm.com>
Change-Id: I3584932e683a66dc815a3af739f2a7be519077f1
diff --git a/src/views/AccessControl/LocalUserManagement/LocalUserManagement.vue b/src/views/AccessControl/LocalUserManagement/LocalUserManagement.vue
new file mode 100644
index 0000000..cca068d
--- /dev/null
+++ b/src/views/AccessControl/LocalUserManagement/LocalUserManagement.vue
@@ -0,0 +1,120 @@
+<template>
+  <b-container fluid>
+    <b-row>
+      <b-col lg="8">
+        <h1>Local user management</h1>
+      </b-col>
+    </b-row>
+    <b-row>
+      <b-col lg="8" md="10">
+        <b-button v-b-modal.modal-settings variant="secondary"
+          >Account policy settings</b-button
+        >
+        <b-button v-b-modal.modal-add-user variant="primary">Add user</b-button>
+      </b-col>
+    </b-row>
+    <b-row>
+      <b-col lg="8" md="10">
+        <b-table bordered head-variant="dark" :items="tableItems" show-empty>
+          <template v-slot:head(actions)="data"></template>
+          <template v-slot:cell(actions)="data">
+            <b-button
+              :disabled="!data.value.edit"
+              v-b-modal.modal-user-settings
+            >
+              <Edit20 />
+            </b-button>
+            <b-button
+              :disabled="!data.value.delete"
+              v-b-modal.modal-user-delete
+            >
+              <TrashCan20 />
+            </b-button>
+          </template>
+        </b-table>
+      </b-col>
+    </b-row>
+    <b-row>
+      <b-col lg="6" md="8">
+        <b-button v-b-toggle.collapse-role-table variant="info" class="mt-3"
+          >View privilege role descriptions</b-button
+        >
+        <b-collapse id="collapse-role-table" class="mt-3">
+          <role-table />
+        </b-collapse>
+      </b-col>
+    </b-row>
+    <!-- Modals -->
+    <b-modal id="modal-add-user" title="Add user" ref="modal">
+      <template v-slot:modal-footer="{ ok, cancel, hide }">
+        <b-button
+          size="sm"
+          variant="secondary"
+          @click="$bvModal.hide('modal-add-user')"
+          >Cancel</b-button
+        >
+        <b-button
+          size="sm"
+          variant="primary"
+          @click="$bvModal.hide('modal-add-user')"
+          >Add user</b-button
+        >
+      </template>
+    </b-modal>
+    <b-modal id="modal-settings" title="Account policy settings"></b-modal>
+    <b-modal id="modal-user-delete" title="Delete user"></b-modal>
+    <b-modal id="modal-user-settings" title="User settings"></b-modal>
+  </b-container>
+</template>
+
+<script>
+import LocalUserManagementRoleTable from "./LocalUserMangementRoleTable";
+import TrashCan20 from "@carbon/icons-vue/es/trash-can/20";
+import Edit20 from "@carbon/icons-vue/es/edit/20";
+
+export default {
+  name: "local-users",
+  components: {
+    TrashCan20,
+    Edit20,
+    roleTable: LocalUserManagementRoleTable
+  },
+  created() {
+    this.getUsers();
+  },
+  computed: {
+    allUsers() {
+      return this.$store.getters["localUsers/allUsers"];
+    },
+    tableItems() {
+      // transform user data to table data
+      return this.allUsers.map(user => {
+        return {
+          username: user.UserName,
+          privilege: user.RoleId,
+          status: user.Locked
+            ? "Locked"
+            : user.Enabled
+            ? "Enabled"
+            : "Disabled",
+          actions: {
+            edit: true,
+            delete: user.UserName === "root" ? false : true
+          }
+        };
+      });
+    }
+  },
+  methods: {
+    getUsers() {
+      this.$store.dispatch("localUsers/getUsers");
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+h1 {
+  margin-bottom: 2rem;
+}
+</style>
diff --git a/src/views/AccessControl/LocalUserManagement/LocalUserMangementRoleTable.vue b/src/views/AccessControl/LocalUserManagement/LocalUserMangementRoleTable.vue
new file mode 100644
index 0000000..1eca05f
--- /dev/null
+++ b/src/views/AccessControl/LocalUserManagement/LocalUserMangementRoleTable.vue
@@ -0,0 +1,110 @@
+<template>
+  <b-table bordered small head-variant="dark" :items="items" :fields="fields">
+    <template v-slot:cell(admin)="data">
+      <template v-if="data.value">
+        <Checkmark20 />
+      </template>
+    </template>
+    <template v-slot:cell(operator)="data">
+      <template v-if="data.value">
+        <Checkmark20 />
+      </template>
+    </template>
+    <template v-slot:cell(user)="data">
+      <template v-if="data.value">
+        <Checkmark20 />
+      </template>
+    </template>
+    <template v-slot:cell(noaccess)="data">
+      <template v-if="data.value">
+        <Checkmark20 />
+      </template>
+    </template>
+  </b-table>
+</template>
+
+<script>
+import Checkmark20 from "@carbon/icons-vue/es/checkmark/20";
+
+export default {
+  components: {
+    Checkmark20
+  },
+  data() {
+    return {
+      items: [
+        {
+          description: "Configure components managed by this service",
+          admin: true,
+          operator: false,
+          user: false,
+          noaccess: false
+        },
+        {
+          description: "Configure manager resources",
+          admin: true,
+          operator: false,
+          user: false,
+          noaccess: false
+        },
+        {
+          description: "Update password for current user account",
+          admin: true,
+          operator: true,
+          user: true,
+          noaccess: false
+        },
+        {
+          description: "Configure users and their accounts",
+          admin: true,
+          operator: false,
+          user: false,
+          noaccess: false
+        },
+        {
+          description: "Log in to the service and read resources",
+          admin: true,
+          operator: true,
+          user: true,
+          noaccess: false
+        },
+        {
+          description: "IPMI access point",
+          admin: true,
+          operator: true,
+          user: true,
+          noaccess: true
+        },
+        {
+          description: "Redfish access point",
+          admin: true,
+          operator: true,
+          user: true,
+          noaccess: false
+        },
+        {
+          description: "SSH access point",
+          admin: true,
+          operator: false,
+          user: false,
+          noaccess: false
+        },
+        {
+          description: "WebUI access point",
+          admin: true,
+          operator: true,
+          user: true,
+          noaccess: false
+        }
+      ],
+      fields: [
+        { key: "description", label: "" },
+        { key: "admin", label: "Admin", class: "text-center" },
+        { key: "operator", label: "Operator", class: "text-center" },
+        { key: "user", label: "User", class: "text-center" },
+        { key: "noaccess", label: "NoAccess", class: "text-center" }
+      ]
+    };
+  }
+};
+</script>
diff --git a/src/views/AccessControl/LocalUserManagement/index.js b/src/views/AccessControl/LocalUserManagement/index.js
new file mode 100644
index 0000000..9137645
--- /dev/null
+++ b/src/views/AccessControl/LocalUserManagement/index.js
@@ -0,0 +1,2 @@
+import LocalUserManagement from "./LocalUserManagement.vue";
+export default LocalUserManagement;