From d236e4c57a7f71589764efccd0cb36337d551055 Mon Sep 17 00:00:00 2001 From: Christian Hofmaier Date: Sat, 4 Aug 2018 23:42:49 +0000 Subject: [permissions] add permission management Add Roles Table with Delete Roles and Create Roles possibilities Add Users Table with Grant Roles and Revoke Roles possibilities --- server/models/permission.js | 21 +++++++++++++++++++++ server/models/role.js | 7 ++++++- server/models/user.js | 4 +++- server/models/user_x_role.js | 17 ----------------- 4 files changed, 30 insertions(+), 19 deletions(-) create mode 100644 server/models/permission.js delete mode 100644 server/models/user_x_role.js (limited to 'server/models') 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 -} -- cgit v1.2.3-55-g7522