Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | 1x 36x 34x 34x 34x 374x 374x 1x 1x 3x 3x 1x 2x 2x 2x 2x 2x 2x 2x 1x 4x 1x 2x 1x 2x 2x 1x 4x 1x 3x 4x 1x 2x 2x 1x 4x 4x 4x 4x 4x 4x 1x 1x 1x | var SecurityDocument = require('./SecurityDocument'); function Profile(Security, id, content, meta) { SecurityDocument.call(this, Security, id, content, meta); // Define properties Object.defineProperties(this, { // private properties deleteActionName: { value: 'deleteProfile' }, updateActionName: { value: 'updateProfile' } }); // promisifying Eif (Security.kuzzle.bluebird) { return Security.kuzzle.bluebird.promisifyAll(this, { suffix: 'Promise', filter: function (name, func, target, passes) { var whitelist = ['hydrate', 'save']; return passes && whitelist.indexOf(name) !== -1; } }); } } Profile.prototype = Object.create(SecurityDocument.prototype, { constructor: { value: Profile } }); /** * Persist to the persistent layer the current profile * * @param {object} [options] - Optional parameters * @param {responseCallback} [cb] - Handles the query response * @returns {Profile} this */ Profile.prototype.save = function (options, cb) { var data, self = this; if (!this.content.policies) { throw new Error('Argument "policies" is mandatory in a profile. This argument contains an array of objects.'); } Eif (options && cb === undefined && typeof options === 'function') { cb = options; options = null; } data = this.serialize(); self.kuzzle.query(self.Security.buildQueryArgs('createOrReplaceProfile'), data, options, cb && function (error) { cb(error, error ? undefined : self); }); return self; }; /** * Add a policy in the policies list * @param {Object} policy - must be an object containing at least a "roleId" member which must be a string. * * @returns {Profile} this */ Profile.prototype.addPolicy = function (policy) { if (typeof policy !== 'object' || typeof policy.roleId !== 'string') { throw new Error('Parameter "policies" must be an object containing at least a "roleId" member which must be a string.'); } if (!this.content.policies) { this.content.policies = []; } this.content.policies.push(policy); return this; }; /** * Set policies list * @param {Array} policies - must be an array of objects containing at least a "roleId" member which must be a string * * @returns {Profile} this */ Profile.prototype.setPolicies = function (policies) { if (!Array.isArray(policies)) { throw new Error('Parameter "policies" must be an array of objects containing at least a "roleId" member which must be a string'); } policies.map(function (policy) { if (typeof policy !== 'object' || typeof policy.roleId !== 'string') { throw new Error('Parameter "policies" must be an array of objects containing at least a "roleId" member which must be a string'); } }); this.content.policies = policies; return this; }; /** * Serialize this object into a JSON object * * @return {object} JSON object representing this securityDocument */ Profile.prototype.serialize = function () { var data = {}; Eif (this.id) { data._id = this.id; } data.body = this.content; data.meta = this.meta; return data; }; /** * Returns the list of policies associated to this profile. * Each policy element is an array of objects containing at least a "roleId" member which must be a string * * @return {object} an array of policies */ Profile.prototype.getPolicies = function () { return this.content.policies; }; module.exports = Profile; |