diff options
author | Yoshie Muranaka <yoshiemuranaka@gmail.com> | 2019-12-04 08:20:04 +0300 |
---|---|---|
committer | Derick Montague <derick.montague@ibm.com> | 2020-01-22 07:45:29 +0300 |
commit | 5a7dcc9954466e4d8a10f031c8f8f9af828601b6 (patch) | |
tree | 04c6d355489de23eeec219e0883c9d9d565df88b /src/views/AccessControl/LocalUserManagement | |
parent | 74c24f15b8f7d97ffaad657c25a35eb2081e739e (diff) | |
download | webui-vue-5a7dcc9954466e4d8a10f031c8f8f9af828601b6.tar.xz |
Create LocalUserManagement view directory
Signed-off-by: Yoshie Muranaka <yoshiemuranaka@gmail.com>
Signed-off-by: Derick Montague <derick.montague@ibm.com>
Change-Id: I3584932e683a66dc815a3af739f2a7be519077f1
Diffstat (limited to 'src/views/AccessControl/LocalUserManagement')
3 files changed, 232 insertions, 0 deletions
diff --git a/src/views/AccessControl/LocalUserManagement/LocalUserManagement.vue b/src/views/AccessControl/LocalUserManagement/LocalUserManagement.vue new file mode 100644 index 00000000..cca068dc --- /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 00000000..1eca05fb --- /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 00000000..9137645d --- /dev/null +++ b/src/views/AccessControl/LocalUserManagement/index.js @@ -0,0 +1,2 @@ +import LocalUserManagement from "./LocalUserManagement.vue"; +export default LocalUserManagement; |