summaryrefslogtreecommitdiffstats
path: root/server/models
diff options
context:
space:
mode:
authorChristian Hofmaier2018-08-05 01:42:49 +0200
committerChristian Hofmaier2018-08-05 01:42:49 +0200
commitd236e4c57a7f71589764efccd0cb36337d551055 (patch)
tree6d47dc6deface87f1985ce7daf26692e25838b16 /server/models
parent[store/global] simplified settings loading (diff)
downloadbas-d236e4c57a7f71589764efccd0cb36337d551055.tar.gz
bas-d236e4c57a7f71589764efccd0cb36337d551055.tar.xz
bas-d236e4c57a7f71589764efccd0cb36337d551055.zip
[permissions] add permission management
Add Roles Table with Delete Roles and Create Roles possibilities Add Users Table with Grant Roles and Revoke Roles possibilities
Diffstat (limited to 'server/models')
-rw-r--r--server/models/permission.js21
-rw-r--r--server/models/role.js7
-rw-r--r--server/models/user.js4
-rw-r--r--server/models/user_x_role.js17
4 files changed, 30 insertions, 19 deletions
diff --git a/server/models/permission.js b/server/models/permission.js
new file mode 100644
index 0000000..a1bd5d3
--- /dev/null
+++ b/server/models/permission.js
@@ -0,0 +1,21 @@
+'use strict'
+module.exports = (sequelize, DataTypes) => {
+ var permission = sequelize.define('permission', {
+ id: {
+ allowNull: false,
+ autoIncrement: true,
+ primaryKey: true,
+ type: DataTypes.INTEGER
+ },
+ name: DataTypes.STRING,
+ descr: DataTypes.STRING,
+ groupdependent: DataTypes.BOOLEAN
+ }, {
+ timestamps: false
+ })
+ permission.associate = function (models) {
+
+ }
+
+ return permission
+}
diff --git a/server/models/role.js b/server/models/role.js
index 60fba53..2ce1ad1 100644
--- a/server/models/role.js
+++ b/server/models/role.js
@@ -13,7 +13,12 @@ module.exports = (sequelize, DataTypes) => {
timestamps: false
})
role.associate = function (models) {
- // associations can be defined here
+ var RoleXPermission = sequelize.define('role_x_permission', {}, { timestamps: false, freezeTableName: true })
+ role.belongsToMany(models.permission, { as: 'permissions', through: RoleXPermission, foreignKey: 'roleId', otherKey: 'permissionId'})
+
+ var RoleXGroup = sequelize.define('role_x_group', {}, { timestamps: false, freezeTableName: true })
+ role.belongsToMany(models.group, { as: 'groups', through: RoleXGroup, foreignKey: 'roleId', otherKey: 'groupId'})
}
+
return role
}
diff --git a/server/models/user.js b/server/models/user.js
index 63e87bd..7ef8afc 100644
--- a/server/models/user.js
+++ b/server/models/user.js
@@ -15,7 +15,9 @@ module.exports = (sequelize, DataTypes) => {
timestamps: false
})
user.associate = function (models) {
- // associations can be defined here
+ var UserXRole = sequelize.define('user_x_role', {}, { timestamps: false, freezeTableName: true })
+ user.belongsToMany(models.role, { as: 'roles', through: UserXRole, foreignKey: 'userId', otherKey: 'roleId'})
}
+
return user
}
diff --git a/server/models/user_x_role.js b/server/models/user_x_role.js
deleted file mode 100644
index 96d5883..0000000
--- a/server/models/user_x_role.js
+++ /dev/null
@@ -1,17 +0,0 @@
-'use strict'
-module.exports = (sequelize, DataTypes) => {
- var user_x_role = sequelize.define('user_x_role', {},
- {
- timestamps: false
- })
-
- user_x_role.associate = function (models) {
- // associations can be defined here
- // sequelize.role.belongsToMany(sequelize.user, {through: 'user_x_role', foreignKey: 'userid'});
- // sequelize.user.hasMany(sequelize.role, {
- // through: 'user_x_role',
- // foreignKey: 'roleid'
- // });
- }
- return user_x_role
-}