From d236e4c57a7f71589764efccd0cb36337d551055 Mon Sep 17 00:00:00 2001 From: Christian Hofmaier Date: Sat, 4 Aug 2018 23:42:49 +0000 Subject: [permissions] add permission management Add Roles Table with Delete Roles and Create Roles possibilities Add Users Table with Grant Roles and Revoke Roles possibilities --- webapp/package-lock.json | 8 + webapp/src/components/PermissionModule.vue | 90 +++++-- webapp/src/components/PermissionModuleEdit.vue | 273 +++++++++++++++++++++ .../src/components/PermissionModuleGrantRevoke.vue | 197 +++++++++++++++ webapp/src/components/PermissionModuleRoleList.vue | 91 +++++++ webapp/src/components/PermissionModuleUserList.vue | 88 +++++++ webapp/src/store/index.js | 4 +- webapp/src/store/permissions.js | 81 ++++++ 8 files changed, 816 insertions(+), 16 deletions(-) create mode 100644 webapp/src/components/PermissionModuleEdit.vue create mode 100644 webapp/src/components/PermissionModuleGrantRevoke.vue create mode 100644 webapp/src/components/PermissionModuleRoleList.vue create mode 100644 webapp/src/components/PermissionModuleUserList.vue create mode 100644 webapp/src/store/permissions.js (limited to 'webapp') diff --git a/webapp/package-lock.json b/webapp/package-lock.json index 2fac179..91e680d 100644 --- a/webapp/package-lock.json +++ b/webapp/package-lock.json @@ -11201,6 +11201,14 @@ "rollup-plugin-node-resolve": "^2.0.0" } }, + "vue2-hammer": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/vue2-hammer/-/vue2-hammer-1.0.6.tgz", + "integrity": "sha512-MfRDkMdQoEng/BRe7moIDbiMgcPqgclVD3WqNfnQ6JlKtTOyMV/X5Z8/IEySa8QGHDVDOp9fI3WmwEoKxnZQ3g==", + "requires": { + "hammerjs": "^2.0.8" + } + }, "vuetify": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-1.1.1.tgz", diff --git a/webapp/src/components/PermissionModule.vue b/webapp/src/components/PermissionModule.vue index c63f962..00796b5 100644 --- a/webapp/src/components/PermissionModule.vue +++ b/webapp/src/components/PermissionModule.vue @@ -3,44 +3,104 @@ "en": { "roles": "Roles", "users": "Users", - "createRole": "Create Role", - "assignRole": "Assign Role", - "revokeRole": "Revoke Role" + "delete-are-you-sure": "Are you sure you want to delete this role? | Are you sure you want to delete those roles?", + "delete-permission": "Delete {0} role | Delete {0} roles" }, "de": { "roles": "Rollen", "users": "Nutzer", - "createRole": "Rolle erstellen", - "assignRole": "Rolle zuweisen", - "revokeROle": "Rolleentziehen" + "delete-are-you-sure": "Sind sie sicher, dass sie diese Rolle Löschen wollen? | Sind sie sicher, dass sie diese Rollen Löschen wollen?", + "delete-permission": "Delete {0} role | Delete {0} roles" } } diff --git a/webapp/src/components/PermissionModuleEdit.vue b/webapp/src/components/PermissionModuleEdit.vue new file mode 100644 index 0000000..5e892de --- /dev/null +++ b/webapp/src/components/PermissionModuleEdit.vue @@ -0,0 +1,273 @@ + +{ + "en": { + }, + "de": { + } +} + + + + + + + + diff --git a/webapp/src/components/PermissionModuleGrantRevoke.vue b/webapp/src/components/PermissionModuleGrantRevoke.vue new file mode 100644 index 0000000..c999e1b --- /dev/null +++ b/webapp/src/components/PermissionModuleGrantRevoke.vue @@ -0,0 +1,197 @@ + +{ + "en": { + }, + "de": { + } +} + + + + + + + + diff --git a/webapp/src/components/PermissionModuleRoleList.vue b/webapp/src/components/PermissionModuleRoleList.vue new file mode 100644 index 0000000..5e3632a --- /dev/null +++ b/webapp/src/components/PermissionModuleRoleList.vue @@ -0,0 +1,91 @@ + +{ + "en": { + "create-role": "Create Role", + "delete-role": "Delete {0} Role | Delete {0} Roles" + }, + "de": { + "create-role": "Rolle erstellen", + "delete-role": "Lösche {0} Rolle | Lösche {0} Rollen" + } +} + + + + + + + + diff --git a/webapp/src/components/PermissionModuleUserList.vue b/webapp/src/components/PermissionModuleUserList.vue new file mode 100644 index 0000000..074a11f --- /dev/null +++ b/webapp/src/components/PermissionModuleUserList.vue @@ -0,0 +1,88 @@ + +{ + "en": { + "grant-role": "Grant Role", + "revoke-role": "Revoke Role" + }, + "de": { + "grant-role": "Rolle zuweisen", + "revoke-role": "Rolle entziehen" + } +} + + + + + + + + diff --git a/webapp/src/store/index.js b/webapp/src/store/index.js index afaa1b4..b351957 100644 --- a/webapp/src/store/index.js +++ b/webapp/src/store/index.js @@ -3,12 +3,14 @@ import Vuex from 'vuex' import globalStore from '@/store/global' import groups from '@/store/groups' import backends from '@/store/backends' +import permissions from '@/store/permissions' Vue.use(Vuex) globalStore.modules = { groups, - backends + backends, + permissions } export default new Vuex.Store(globalStore) diff --git a/webapp/src/store/permissions.js b/webapp/src/store/permissions.js new file mode 100644 index 0000000..a8d09ec --- /dev/null +++ b/webapp/src/store/permissions.js @@ -0,0 +1,81 @@ +import axios from 'axios' + +export default { + namespaced: true, + state: { + roles: [], + users: [], + permissions: [], + selectedRoles: [], + selectedUsers: [], + roleId: '', + dialog: false, + grantRevoke: false, + grant: false, + edit: false + }, + mutations: { + setDialog (state, value) { + state.dialog = value + }, + setRoles (state, value) { + state.roles = value + }, + setUsers (state, value) { + state.users = value + }, + setPermissions (state, value) { + state.permissions = value + }, + setSelectedRoles (state, value) { + state.selectedRoles = value + }, + setSelectedUsers (state, value) { + state.selectedUsers = value + }, + editRole (state, value) { + state.roleId = value + state.edit = true + }, + setEdit (state, value) { + state.edit = value + }, + grantRevoke (state, value) { + state.grantRevoke = value.show + state.grant = value.grant + }, + setGrantRevoke (state, value) { + state.grantRevoke = value + } + }, + actions: { + deleteSelectedRoles (context) { + // Filter selected array to get a list of ids. + const filteredArray = context.state.selectedRoles.map(x => x.id) + axios.post('/api/permissions/deleteRoles', { id: filteredArray }).then(response => { + context.dispatch('loadData') + context.commit('setSelectedRoles', []) + }) + }, + loadRoleData (context) { + axios.get('/api/permissions/getRoleList').then(response => { + context.commit('setRoles', response.data) + }) + }, + loadUserData (context) { + axios.get('/api/user/getUserList').then(response => { + context.commit('setUsers', response.data) + }) + }, + loadPermissionData (context) { + axios.get('/api/permissions/getPermissionList').then(response => { + context.commit('setPermissions', response.data) + }) + }, + loadData (context) { + context.dispatch('loadPermissionData') + context.dispatch('loadRoleData') + context.dispatch('loadUserData') + } + } +} -- cgit v1.2.3-55-g7522