summaryrefslogtreecommitdiffstats
path: root/server/lib/permissions.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/lib/permissions.js')
-rw-r--r--server/lib/permissions.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/server/lib/permissions.js b/server/lib/permissions.js
new file mode 100644
index 0000000..431e051
--- /dev/null
+++ b/server/lib/permissions.js
@@ -0,0 +1,38 @@
+/* global __appdir */
+const path = require('path')
+var permissions = require(path.join(__appdir, 'config', 'permissions'))
+var db = require(path.join(__appdir, 'lib', 'sequelize'))
+
+updatePermissionDatabase()
+
+function updatePermissionDatabase () {
+ var permissionNames = []
+
+ // Insert / Update Entries in Database
+ 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
+ db.permission.destroy(
+ { where: { $not: { name: permissionNames } } }
+ )
+}
+
+// Update or Insert function
+function upsert (model, newItem, where) {
+ return model
+ .findOne({where: where})
+ .then(function (foundItem) {
+ if (!foundItem) {
+ return model
+ .create(newItem)
+ .then(function (item) { return {item: item, created: true} })
+ }
+
+ return model
+ .update(newItem, {where: where})
+ .then(function (item) { return {item: item, created: false} })
+ })
+} \ No newline at end of file