summaryrefslogtreecommitdiffstats
path: root/server/lib/permissions/index.js
diff options
context:
space:
mode:
authorChristian Hofmaier2018-08-05 02:17:26 +0200
committerChristian Hofmaier2018-08-05 02:17:26 +0200
commit6eb5f471993df1ce96bde7ec33c61ccb141ea907 (patch)
tree0614e828e0be213f1bbf625733bea257b420f7cc /server/lib/permissions/index.js
parent[webapp/groups] asdf (diff)
downloadbas-6eb5f471993df1ce96bde7ec33c61ccb141ea907.tar.gz
bas-6eb5f471993df1ce96bde7ec33c61ccb141ea907.tar.xz
bas-6eb5f471993df1ce96bde7ec33c61ccb141ea907.zip
fdsa
Diffstat (limited to 'server/lib/permissions/index.js')
-rw-r--r--server/lib/permissions/index.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/server/lib/permissions/index.js b/server/lib/permissions/index.js
new file mode 100644
index 0000000..e1157eb
--- /dev/null
+++ b/server/lib/permissions/index.js
@@ -0,0 +1,38 @@
+/* global __appdir */
+const path = require('path')
+var permissions = require(path.join(__appdir, 'lib', 'permissions', '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