@inspire-platform/sails-hook-permissions
Version:
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.
37 lines (30 loc) • 1.34 kB
JavaScript
/**
* Create admin user.
* @param adminRole - the admin role which grants all permissions
*/
;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
exports.create = function (roles, userModel) {
if (_lodash2['default'].isEmpty(sails.config.permissions.adminUser.username)) {
throw new Error('sails.config.permissions.adminUser.username is not set');
}
if (_lodash2['default'].isEmpty(sails.config.permissions.adminUser.password)) {
throw new Error('sails.config.permissions.adminUser.password is not set');
}
if (_lodash2['default'].isEmpty(sails.config.permissions.adminUser.email)) {
throw new Error('sails.config.permissions.adminUser.email is not set');
}
return sails.models.user.findOne({ username: sails.config.permissions.adminUser.username }).then(function (user) {
if (user) return user;
sails.log.info('sails-hook-permissions: admin user does not exist; creating...');
var adminUser = _lodash2['default'].merge(sails.config.permissions.adminUser, {
roles: [_lodash2['default'].find(roles, { name: 'admin' }).id],
createdBy: 1,
owner: 1,
model: userModel.id
});
return sails.models.user.register(adminUser);
});
};