@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.
35 lines (31 loc) • 1.14 kB
JavaScript
/**
* Create admin user.
* @param adminRole - the admin role which grants all permissions
*/
import _ from 'lodash'
exports.create = function (roles, userModel) {
if (_.isEmpty(sails.config.permissions.adminUser.username)) {
throw new Error('sails.config.permissions.adminUser.username is not set');
}
if (_.isEmpty(sails.config.permissions.adminUser.password)) {
throw new Error('sails.config.permissions.adminUser.password is not set');
}
if (_.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...');
let adminUser = _.merge(
sails.config.permissions.adminUser,
{
roles: [ _.find(roles, { name: 'admin' }).id ],
createdBy: 1,
owner: 1,
model: userModel.id
}
);
return sails.models.user.register(adminUser);
});
};