UNPKG

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.

67 lines (64 loc) 1.7 kB
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(){ 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); }) } ] });