sails-permissions-sequelize
Version:
Sequelize version of : Comprehensive user permissions and entitlements system for sails.js and Waterline. Supports user authentication with passport.js, role-based permissioning, object ownership, and row-level security.
57 lines (54 loc) • 1.5 kB
JavaScript
;
var _ = require('lodash');
var _super = require('sails-auth/api/models/User');
_.merge(exports, _super);
_.merge(exports, {
attributes: {
// roles: {
// collection: 'Role',
// via: 'users',
// dominant: true
// },
// permissions: {
// collection: "Permission",
// via: "user"
// }
},
associate: function associate() {
User.hasMany(Permission, { as: 'permissions' });
User.belongsToMany(Permission, { through: 'userroles', as: 'roles' });
},
options: {
tableName: 'user',
classMethods: {},
instanceMethods: {},
hooks: {}
},
/**
* Attach default Role to a new User
*/
afterCreate: [function setOwner(user, next) {
sails.log.verbose('User.afterCreate.setOwner', user);
User.update({ id: user.id }, { owner: user.id }).then(function (user) {
next();
})['catch'](function (e) {
sails.log.error(e);
next(e);
});
}, function attachDefaultRole(user, next) {
sails.log('User.afterCreate.attachDefaultRole', user);
User.findOne(user.id).populate('roles').then(function (_user) {
user = _user;
return Role.findOne({ name: 'registered' });
}).then(function (role) {
user.roles.add(role.id);
return user.save();
}).then(function (updatedUser) {
sails.log.silly('role "registered" attached to user', user.username);
next();
})['catch'](function (e) {
sails.log.error(e);
next(e);
});
}]
});