summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Hofmaier2020-04-13 01:51:15 +0200
committerChristian Hofmaier2020-04-13 01:51:15 +0200
commit38dceaade103a4ed3a07cc1a41e1a8ae379f5344 (patch)
tree9205ed6ed7c5de30f069f2ffc12c59d100452e99
parent[npm] add directory require module (diff)
downloadbas-38dceaade103a4ed3a07cc1a41e1a8ae379f5344.tar.gz
bas-38dceaade103a4ed3a07cc1a41e1a8ae379f5344.tar.xz
bas-38dceaade103a4ed3a07cc1a41e1a8ae379f5344.zip
[permissionmanager] split permissions in one file per module
-rw-r--r--server/lib/permissions/index.js39
-rw-r--r--server/lib/permissions/modules/eventmanager.json12
-rw-r--r--server/lib/permissions/modules/permissionmanager.json12
-rw-r--r--server/lib/permissions/permissions.json22
4 files changed, 45 insertions, 40 deletions
diff --git a/server/lib/permissions/index.js b/server/lib/permissions/index.js
index a0af9d4..f891004 100644
--- a/server/lib/permissions/index.js
+++ b/server/lib/permissions/index.js
@@ -1,36 +1,39 @@
/* global __appdir */
const path = require('path')
-var permissions = require(path.join(__appdir, 'lib', 'permissions', 'permissions'))
var db = require(path.join(__appdir, 'lib', 'sequelize'))
+var requireDirectory = require('require-directory')
+var data = requireDirectory(module, './modules')
+
updatePermissionDatabase()
/*
- * Update the permission-Database accordingly to the permission.json
- */
+ * Update the permission-database accordingly to the permission JSONs
+ */
function updatePermissionDatabase () {
var permissionNames = []
-
- // 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 which are not in the permission.json
+ for (let module in data) {
+ data[module].forEach(function (permission) {
+ permissionNames.push(module + '.' + permission.name)
+ upsert(db.permission, { name: module + '.' + permission.name, descr: permission.description, groupdependent: permission.groupdependent }, { name: module + '.' + permission.name })
+ })
+ }
+ // Delete entries from DB which are not in the JSON files
db.permission.destroy(
{ where: { [db.Op.not]: { name: permissionNames } } }
)
+ // (Re-)Create Superadmin Permission
+ upsert(db.permission, { name: 'superadmin', descr: 'Can do anything.', groupdependent: false }, { name: 'superadmin' })
}
/*
- * model: <DB_MODEL>
- * newItem: <DB_OBJECT>
- * where: <DB_WHERECLAUSE>
- *
- * Updates or inserts the given newItem in the given model according to
- * the where-clause.
- */
+ * 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/server/lib/permissions/modules/eventmanager.json b/server/lib/permissions/modules/eventmanager.json
new file mode 100644
index 0000000..97507ff
--- /dev/null
+++ b/server/lib/permissions/modules/eventmanager.json
@@ -0,0 +1,12 @@
+[
+ {
+ "name": "view",
+ "description": "View Events",
+ "groupdependent": false
+ },
+ {
+ "name": "edit",
+ "description": "Edit Events",
+ "groupdependent": false
+ }
+] \ No newline at end of file
diff --git a/server/lib/permissions/modules/permissionmanager.json b/server/lib/permissions/modules/permissionmanager.json
new file mode 100644
index 0000000..ee9b12b
--- /dev/null
+++ b/server/lib/permissions/modules/permissionmanager.json
@@ -0,0 +1,12 @@
+[
+ {
+ "name": "view",
+ "description": "View Roles",
+ "groupdependent": false
+ },
+ {
+ "name": "edit",
+ "description": "Edit Roles",
+ "groupdependent": false
+ }
+] \ No newline at end of file
diff --git a/server/lib/permissions/permissions.json b/server/lib/permissions/permissions.json
deleted file mode 100644
index f574367..0000000
--- a/server/lib/permissions/permissions.json
+++ /dev/null
@@ -1,22 +0,0 @@
-[
- {
- "name": "superadmin",
- "descr": "Can do anything. Is like superman.",
- "groupdependent": false
- },
- {
- "name": "permissions.viewrole",
- "descr": "For viewing the role list.",
- "groupdependent": false
- },
- {
- "name": "permissions.editrole",
- "descr": "For save/edit/delete roles.",
- "groupdependent": false
- },
- {
- "name": "permissions.grantrevoke",
- "descr": "For grant/revoke roles to/from users.",
- "groupdependent": false
- }
-] \ No newline at end of file