identity
Version:
Identity client
65 lines (52 loc) • 1.61 kB
JavaScript
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;
}
};