UNPKG

@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
/** * Create admin user. * @param adminRole - the admin role which grants all permissions */ 'use strict'; 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); }); };