UNPKG

ghost

Version:

The professional publishing platform

30 lines (26 loc) 953 B
const Promise = require('bluebird'); const debug = require('ghost-ignition').debug('api:v3:utils:serializers:output:roles'); const canThis = require('../../../../../services/permissions').canThis; module.exports = { browse(models, apiConfig, frame) { debug('browse'); const roles = models.toJSON(frame.options); if (frame.options.permissions !== 'assign') { return frame.response = { roles: roles }; } else { return Promise.filter(roles.map((role) => { return canThis(frame.options.context).assign.role(role) .return(role) .catch(() => {}); }), (value) => { return value && (value.name !== 'Owner'); }).then((filteredRoles) => { return frame.response = { roles: filteredRoles }; }); } } };