Akció élettartama, eredmények kiterjesztése és adminisztrátor őrök
Az oninput($) a bemenet ellenőrzése és a deklarált middleware után fut, közvetlenül a művelet függvénye előtt. Az onoutput(error,response,$) a sikeres befejezés útvonalán fut, a kimenet szűrése és az opcionális bővítés után. A 0.0.19 verzióban egy érvénytelen bemenet vagy a $.invalid() nem hívja meg ezt a hookot; ne kezelje univerzális hiba- vagy finally-hookként.
Az extend:'result' hozzáadja a művelet eredményét az ellenőrzött bemenetéhez az adott kulcs alatt, és a kibővített bemenetet adja vissza. A pontokat tartalmazó útvonal beágyazott értékadást használ. Hasznos a műveletek szándékos összeállításához; megváltoztatja a válasz nyilvános szerződését.
Mind a sa:true, mind a su:true egy felhasználót igényel az adminisztrátor zászlójával. Nem határozzák meg két különleges harmadik felet. A normál engedélyek ellenőrzése elválasztva marad.
MAIN.hooks = [];
AUTH(function($) {
var role = $.headers['x-demo-role'];
if (role === 'sa' || role === 'su') $.success({ id:'admin', [role]:true });
else if (role === 'member') $.success({id:'member'});
else $.invalid();
});
NEWACTION('Hooks|extend', {
input: '*name:String',
extend: 'result',
oninput: function($) { MAIN.hooks.push('input:' + $.payload.name); },
onoutput: function(err, response) { MAIN.hooks.push('output:' + response.result.greeting); },
action: function($, model) { $.callback({greeting:'Hello ' + model.name}); }
});
NEWACTION('Hooks|fail', {
onoutput: function() { MAIN.hooks.push('unexpected'); },
action: function($) { $.invalid('failed'); }
});
for (var flag of ['sa','su']) {
var action = { action:function($) { $.success(); } };
action[flag] = true;
NEWACTION('Hooks|' + flag, action);
}exports.install = function() {
ROUTE('POST /extend/ @json --> Hooks|extend');
ROUTE('GET /fail/ --> Hooks|fail');
ROUTE('GET /sa/ --> Hooks|sa');
ROUTE('GET /su/ --> Hooks|su');
ROUTE('GET /hook-events/', $ => $.json(MAIN.hooks));
};