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.

57 lines (54 loc) 1.5 kB
'use strict'; 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); }); }] });