summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/api/permissions.js29
-rw-r--r--server/api/users.js19
-rw-r--r--server/app.js1
-rw-r--r--server/lib/permissions/index.js16
-rw-r--r--webapp/src/components/PermissionModule.vue6
-rw-r--r--webapp/src/components/PermissionModuleEdit.vue36
-rw-r--r--webapp/src/components/PermissionModuleGrantRevoke.vue26
-rw-r--r--webapp/src/components/PermissionModuleRoleList.vue16
-rw-r--r--webapp/src/components/PermissionModuleUserList.vue23
9 files changed, 145 insertions, 27 deletions
diff --git a/server/api/permissions.js b/server/api/permissions.js
index ef7c5e8..5ed09e0 100644
--- a/server/api/permissions.js
+++ b/server/api/permissions.js
@@ -2,7 +2,14 @@
var path = require('path')
var db = require(path.join(__appdir, 'lib', 'sequelize'))
+// GET requests
module.exports.get = {
+
+ /*
+ * ?id=<ROLE_ID>
+ *
+ * @return: Returns the information about a role and it's permissions and groups.
+ */
getRoleById: function (req, res) {
db.role.findOne({ where: { id: req.query.id }, include: ['permissions', 'groups'] }).then(role => {
if (role) res.send(role)
@@ -10,6 +17,9 @@ module.exports.get = {
})
},
+ /*
+ * @return: Returns a list of all roles in the database.
+ */
getRoleList: function (req, res) {
db.role.findAll({
attributes: ['id', 'name', 'descr']
@@ -18,6 +28,9 @@ module.exports.get = {
})
},
+ /*
+ * @return: Returns a list of all permissions in the database.
+ */
getPermissionList: function (req, res) {
db.permission.findAll().then(function (permissions) {
res.status(200).send(permissions)
@@ -25,7 +38,14 @@ module.exports.get = {
}
}
+// POST requests
module.exports.post = {
+
+ /*
+ * id: <ROLE_ID>
+ *
+ * Deletes the role to the given id.
+ */
deleteRoles: function (req, res) {
const roleIds = req.body.id
@@ -34,6 +54,15 @@ module.exports.post = {
})
},
+ /*
+ * id: <ROLE_ID>
+ * name: <ROLE_NAME>
+ * descr: <ROLE_DESCRIPTION>
+ * permissions: <PERMISSION_IDS>
+ * groups: <GROUP_IDS>
+ *
+ * Creates or updates a role.
+ */
saveRole: function (req, res) {
const role = req.body
diff --git a/server/api/users.js b/server/api/users.js
index 2af6cb6..deb69e1 100644
--- a/server/api/users.js
+++ b/server/api/users.js
@@ -4,7 +4,9 @@ var path = require('path')
var db = require(path.join(__appdir, 'lib', 'sequelize'))
var jwt = require('jsonwebtoken')
+// GET requests
module.exports.get = {
+
getUserInfo: function (req, res) {
// Because veryfyToken was succesfully excecuted the request has the attribute token.
const token = req.token
@@ -22,6 +24,9 @@ module.exports.get = {
})
},
+ /*
+ * @return: Returns a list of all users in the database and their given roles.
+ */
getUserList: function (req, res) {
db.user.findAll({
attributes: ['id', 'username', 'name'],
@@ -32,7 +37,15 @@ module.exports.get = {
}
}
+// POST requests
module.exports.post = {
+
+ /*
+ * roleIds: <ROLE_IDS>
+ * userIds: <USER_IDS>
+ *
+ * Adds the given roles to the given users in the database.
+ */
grantRoles: function (req, res) {
const roleIds = req.body.roleIds
const userIds = req.body.userIds
@@ -45,6 +58,12 @@ module.exports.post = {
})
},
+ /*
+ * roleIds: <ROLE_IDS>
+ * userIds: <USER_IDS>
+ *
+ * Removes the given roles from the given users in the database.
+ */
revokeRoles: function (req, res) {
const roleIds = req.body.roleIds
const userIds = req.body.userIds
diff --git a/server/app.js b/server/app.js
index 4f5e6dd..c9a270c 100644
--- a/server/app.js
+++ b/server/app.js
@@ -11,6 +11,7 @@ var app = express()
global.__appdir = __dirname
require('./lib/tftp')
+// Read permissions from JSON and update the database
require('./lib/permissions')
// ############################################################################
diff --git a/server/lib/permissions/index.js b/server/lib/permissions/index.js
index dafa4d1..12db24f 100644
--- a/server/lib/permissions/index.js
+++ b/server/lib/permissions/index.js
@@ -5,22 +5,32 @@ var db = require(path.join(__appdir, 'lib', 'sequelize'))
updatePermissionDatabase()
+ /*
+ * Update the permission-Database accordingly to the permission.json
+ */
function updatePermissionDatabase () {
var permissionNames = []
- // Insert / Update Entries in Database
+ // Insert / Update entries in Database which are in the permission.json
permissions.forEach(function (permission) {
permissionNames.push(permission.name)
upsert(db.permission, { name: permission.name, descr: permission.descr, groupdependent: permission.groupdependent }, { name: permission.name })
})
- // Delete Entries from Database
+ // Delete entries from Database which are not in the permission.json
db.permission.destroy(
{ where: { $not: { name: permissionNames } } }
)
}
-// Update or Insert function
+ /*
+ * model: <DB_MODEL>
+ * newItem: <DB_OBJECT>
+ * where: <DB_WHERECLAUSE>
+ *
+ * Updates or inserts the given newItem in the given model according to
+ * the where-clause.
+ */
function upsert (model, newItem, where) {
return model
.findOne({where: where})
diff --git a/webapp/src/components/PermissionModule.vue b/webapp/src/components/PermissionModule.vue
index 00796b5..5abe7d6 100644
--- a/webapp/src/components/PermissionModule.vue
+++ b/webapp/src/components/PermissionModule.vue
@@ -4,13 +4,15 @@
"roles": "Roles",
"users": "Users",
"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"
+ "delete-permission": "Delete {0} role | Delete {0} roles",
+ "delete-role": "Delete {0} Role | Delete {0} Roles"
},
"de": {
"roles": "Rollen",
"users": "Nutzer",
"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"
+ "delete-permission": "Delete {0} role | Delete {0} roles",
+ "delete-role": "Lösche {0} Rolle | Lösche {0} Rollen"
}
}
</i18n>
diff --git a/webapp/src/components/PermissionModuleEdit.vue b/webapp/src/components/PermissionModuleEdit.vue
index 9de6b99..f94f483 100644
--- a/webapp/src/components/PermissionModuleEdit.vue
+++ b/webapp/src/components/PermissionModuleEdit.vue
@@ -1,8 +1,30 @@
<i18n>
{
"en": {
+ "id": "ID",
+ "name": "Name",
+ "description": "Description",
+ "groupdependent": "Groupdependent",
+ "submit": "Submit",
+ "role": "Role",
+ "permissions": "Permissions",
+ "groups": "Groups",
+ "summary": "Summary",
+ "roleName": "Role Name",
+ "roleNameEmptyError": "Role Name can't be empty."
},
"de": {
+ "id": "ID",
+ "name": "Name",
+ "description": "Beschreibung",
+ "groupdependent": "Gruppengebunden",
+ "submit": "Einreichen",
+ "role": "Rolle",
+ "permissions": "Rechte",
+ "groups": "Gruppen",
+ "summary": "Zusammenfassung",
+ "roleName": "Rollenname",
+ "roleNameEmptyError": "Rollenname kann nicht leer sein."
}
}
</i18n>
@@ -51,7 +73,7 @@
:editable="stepCompleted >= 4"
edit-icon="check"
>
- {{ $t('confirm') }}
+ {{ $t('summary') }}
</v-stepper-step>
</v-stepper-header>
</v-stepper>
@@ -231,14 +253,14 @@ export default {
permissionsSelected: [],
groupsSelected: [],
permissionHeaders: [
- { text: 'Name', value: 'name' },
- { text: 'Description', value: 'descr' },
- { text: 'Groupdependent', value: 'groupdependent' }
+ { text: this.$t('name'), value: 'name' },
+ { text: this.$t('description'), value: 'descr' },
+ { text: this.$t('groupdependent'), value: 'groupdependent' }
],
groupHeaders: [
- { text: 'ID', value: 'id' },
- { text: 'Name', value: 'name' },
- { text: 'Description', value: 'description' }
+ { text: this.$t('id'), value: 'id' },
+ { text: this.$t('name'), value: 'name' },
+ { text: this.$t('description'), value: 'description' }
],
roleName: '',
roleDescr: ''
diff --git a/webapp/src/components/PermissionModuleGrantRevoke.vue b/webapp/src/components/PermissionModuleGrantRevoke.vue
index d68f241..876daca 100644
--- a/webapp/src/components/PermissionModuleGrantRevoke.vue
+++ b/webapp/src/components/PermissionModuleGrantRevoke.vue
@@ -1,8 +1,26 @@
<i18n>
{
"en": {
+ "select_roles": "Select Roles",
+ "check_selection": "Check Selection",
+ "roles": "Roles",
+ "users": "Users",
+ "grant": "Grant",
+ "revoke": "Revoke",
+ "id": "ID",
+ "name": "Name",
+ "description": "Description"
},
"de": {
+ "select_roles": "Rollen auswählen",
+ "check_selection": "Auswahl überprüfen",
+ "roles": "Rollen",
+ "users": "Nutzer",
+ "grant": "Zuweisen",
+ "revoke": "Entziehen",
+ "id": "ID",
+ "name": "Name",
+ "description": "Beschreibung"
}
}
</i18n>
@@ -33,7 +51,7 @@
:editable="stepCompleted >= 2"
edit-icon="check"
>
- {{ $t('confirm_selection') }}
+ {{ $t('check_selection') }}
</v-stepper-step>
</v-stepper-header>
</v-stepper>
@@ -133,9 +151,9 @@ export default {
stepCompleted: 0,
rolesSelected: [],
roleHeaders: [
- { text: 'ID', value: 'id' },
- { text: 'Name', value: 'name' },
- { text: 'Description', value: 'descr' }
+ { text: this.$t('id'), value: 'id' },
+ { text: this.$t('name'), value: 'name' },
+ { text: this.$t('description'), value: 'descr' },
]
}
},
diff --git a/webapp/src/components/PermissionModuleRoleList.vue b/webapp/src/components/PermissionModuleRoleList.vue
index c13385e..050e394 100644
--- a/webapp/src/components/PermissionModuleRoleList.vue
+++ b/webapp/src/components/PermissionModuleRoleList.vue
@@ -2,11 +2,17 @@
{
"en": {
"create-role": "Create Role",
- "delete-role": "Delete {0} Role | Delete {0} Roles"
+ "delete-role": "Delete {0} Role | Delete {0} Roles",
+ "id": "ID",
+ "name": "Name",
+ "description": "Description"
},
"de": {
"create-role": "Rolle erstellen",
- "delete-role": "Lösche {0} Rolle | Lösche {0} Rollen"
+ "delete-role": "Lösche {0} Rolle | Lösche {0} Rollen",
+ "id": "ID",
+ "name": "Name",
+ "description": "Beschreibung"
}
}
</i18n>
@@ -66,9 +72,9 @@ export default {
data () {
return {
headers: [
- { text: 'ID', value: 'id' },
- { text: 'Name', value: 'name' },
- { text: 'Description', value: 'descr' },
+ { text: this.$t('id'), value: 'id' },
+ { text: this.$t('name'), value: 'name' },
+ { text: this.$t('description'), value: 'descr' },
{ sortable: false }
]
}
diff --git a/webapp/src/components/PermissionModuleUserList.vue b/webapp/src/components/PermissionModuleUserList.vue
index 642ac37..f093680 100644
--- a/webapp/src/components/PermissionModuleUserList.vue
+++ b/webapp/src/components/PermissionModuleUserList.vue
@@ -2,11 +2,17 @@
{
"en": {
"grant-role": "Grant Role",
- "revoke-role": "Revoke Role"
+ "revoke-role": "Revoke Role",
+ "username": "Username",
+ "name": "Name",
+ "roles": "Roles"
},
"de": {
"grant-role": "Rolle zuweisen",
- "revoke-role": "Rolle entziehen"
+ "revoke-role": "Rolle entziehen",
+ "username": "Nutzername",
+ "name": "Name",
+ "roles": "Rollen"
}
}
</i18n>
@@ -38,7 +44,12 @@
<td>{{ props.item.name }}</td>
<td>
<template v-for="role in props.item.roles">
- {{ role.name }}
+ <v-btn
+ small
+ outline
+ flat>
+ {{ role.name }}
+ </v-btn>
</template>
</td>
</tr>
@@ -64,9 +75,9 @@ export default {
data () {
return {
headers: [
- { text: 'Username', value: 'username' },
- { text: 'Name', value: 'name' },
- { text: 'Roles', value: 'id' }
+ { text: this.$t('username'), value: 'username' },
+ { text: this.$t('name'), value: 'name' },
+ { text: this.$t('roles'), value: 'id' }
]
}
},