UNPKG

identity

Version:

Identity client

65 lines (52 loc) 1.61 kB
var PermissionHelper = require('./permission_helper'); exports.definition = { mixinCallback:function(){ this._identity_sync = false; }, permission: function(config, options){ var helper = new PermissionHelper(this.store.api, config, options); this.beforeFind(helper.beforeFind()); this.afterFind(helper.afterFind()); this.beforeCreate(helper.beforeCreate(), 100); this.beforeUpdate(helper.beforeUpdate(), 100); this.beforeDestroy(helper.beforeDestroy(), 100); this.afterSave(helper.afterSave()); return this; }, identityValue: function(entity_id, fn){ if(typeof fn !== 'function') fn = function(){return this.get('name')}; this._identity_sync = entity_id; //create a record function this.identitySync = fn; //Value model var Value = this.store.api.identity.store.Model('Value'); //add afterCreate and afterUpdate hook for auto sync this.afterCreate(function(record, trans, next){ var name = record.identitySync(); if(name){ Value.create({ id: record.id, name: name, entity_id: entity_id }).then(next); }else{ next(); } }); this.afterUpdate(function(record, trans, next){ var name = record.identitySync(); if(name){ var value = Value.new({ id: record.id, name: name, entity_id: entity_id }); value.__exists = true; value.save().then(next); }else{ next(); } }); return this; } };