From 35080acbbf29de7cfd21d19f3c3637d7231f2a7e Mon Sep 17 00:00:00 2001 From: Yoshie Muranaka Date: Fri, 17 Jan 2020 15:38:57 -0600 Subject: Add local user page - Add Bootstrap out of box table component - Import layout plugin - Add user role privilege table - Add local user modals - Add inline table actions - Add local user store - Add Axios requests Initial setup to use Vuex store for local user management page. For now using a timeout to fake fetching async data. Data flow is working between store and component. Using Axios in very unrefined way, just to get some API requests going. Simple user request working if base, username, password variables defined. Signed-off-by: Yoshie Muranaka Signed-off-by: Derick Montague Change-Id: I3b0d757857268feff32c6bec1c3fd95c302a568f --- src/main.js | 8 +- src/store/index.js | 6 +- .../AccessControl/LocalUserMangementStore.js | 56 ++++++++++ src/views/AccessControl/LocalUserManagement.vue | 119 ++++++++++++++++++++- .../AccessControl/LocalUserMangementRoleTable.vue | 116 ++++++++++++++++++++ 5 files changed, 302 insertions(+), 3 deletions(-) create mode 100644 src/store/modules/AccessControl/LocalUserMangementStore.js create mode 100644 src/views/AccessControl/LocalUserMangementRoleTable.vue (limited to 'src') diff --git a/src/main.js b/src/main.js index 16687c5c..742b991e 100644 --- a/src/main.js +++ b/src/main.js @@ -8,7 +8,10 @@ import { NavPlugin, CollapsePlugin, LinkPlugin, - NavbarPlugin + NavbarPlugin, + TablePlugin, + LayoutPlugin, + ModalPlugin } from "bootstrap-vue"; Vue.use(ButtonPlugin); @@ -16,6 +19,9 @@ Vue.use(NavPlugin); Vue.use(CollapsePlugin); Vue.use(LinkPlugin); Vue.use(NavbarPlugin); +Vue.use(TablePlugin); +Vue.use(LayoutPlugin); +Vue.use(ModalPlugin); Vue.prototype.$http = Axios; diff --git a/src/store/index.js b/src/store/index.js index fb6015f4..3b86bfe2 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1,11 +1,15 @@ import Vue from "vue"; import Vuex from "vuex"; +import LocalUserManagementStore from "./modules/AccessControl/LocalUserMangementStore"; + Vue.use(Vuex); export default new Vuex.Store({ state: {}, mutations: {}, actions: {}, - modules: {} + modules: { + localUsers: LocalUserManagementStore + } }); diff --git a/src/store/modules/AccessControl/LocalUserMangementStore.js b/src/store/modules/AccessControl/LocalUserMangementStore.js new file mode 100644 index 00000000..dddfd2cc --- /dev/null +++ b/src/store/modules/AccessControl/LocalUserMangementStore.js @@ -0,0 +1,56 @@ +import Axios from "axios"; + +const LocalUserManagementStore = { + namespaced: true, + state: { + allUsers: [] + }, + getters: { + allUsers(state) { + return state.allUsers; + } + }, + mutations: { + setUsers(state, allUsers) { + state.allUsers = allUsers; + } + }, + actions: { + getUsers({ commit }) { + let base; + let username; + let password; + if (base && username && password) { + Axios.defaults.baseURL = base; + Axios.defaults.auth = {}; + Axios.defaults.auth.username = username; + Axios.defaults.auth.password = password; + Axios.get("redfish/v1/AccountService/Accounts") + .then(response => { + return response.data.Members.map(user => user["@odata.id"]); + }) + .then(userIds => { + return Axios.all(userIds.map(user => Axios.get(user))); + }) + .then(users => { + const userData = users.map(user => user.data); + commit("setUsers", userData); + }) + .catch(error => { + console.log(error); + }); + } else { + // Faking async call with timeout + setTimeout(() => { + const users = [ + { UserName: "root", RoleId: "Admin", Locked: false, Enabled: true }, + { UserName: "user1", RoleId: "user", Locked: false, Enabled: false } + ]; + commit("setUsers", users); + }, 3000); + } + } + } +}; + +export default LocalUserManagementStore; diff --git a/src/views/AccessControl/LocalUserManagement.vue b/src/views/AccessControl/LocalUserManagement.vue index 3233aeca..cca068dc 100644 --- a/src/views/AccessControl/LocalUserManagement.vue +++ b/src/views/AccessControl/LocalUserManagement.vue @@ -1,3 +1,120 @@ + + + + diff --git a/src/views/AccessControl/LocalUserMangementRoleTable.vue b/src/views/AccessControl/LocalUserMangementRoleTable.vue new file mode 100644 index 00000000..41dcdf7f --- /dev/null +++ b/src/views/AccessControl/LocalUserMangementRoleTable.vue @@ -0,0 +1,116 @@ + + + + + -- cgit v1.2.3