ForgeTotal.js 5
sk

Total.js 5

Zaznamenajte udalosti auditu akcie pomocou natívnej zásuvky auditu

Total.js 5 · total5@0.0.19 actionsauditsecurity Spustené s Total.js 5

Akcia môže nastaviť audit na textovú šablónu. Po úspešnom dokončení framework pošle auditný záznam do DEF.onAudit(name, data, context). Automatický záznam používa názov sinku actions a obsahuje id akcie. Akcia môže tiež explicitne zavolať $.audit(message, type); to vyšle vlastný záznam a môže niesť typ ako info.

Príklad nahrádza auditný sink zberačom v pamäti, aby sme mohli preskúmať jeho zmluvu. Zaznamenáva iba názov, id akcie, správu a typ. Framework pripravuje aj kontextové dáta a serializované dáta požiadavky: skutočný sink potrebuje explicitnú politiku pre tajomstvá, uchovávanie, prístup a zlyhania. Auditná udalosť nie je dôkazom, že sa obchodná transakcia potvrdila; akcia by mala zavolať svoj callback úspechu až po úspechu zamýšľaného zápisu.

V tejto verzii sa automatická auditná udalosť vyskytuje po úspešnej akčnej ceste. nezaznamenáva automaticky neúspechy validácie alebo zlyhané akcie.

definitions/audit.js
MAIN.auditEvents = [];
DEF.onAudit = function(name, data) {
	MAIN.auditEvents.push({ sink: name || null, action: data.action, message: data.message || '', type: data.type || null });
};

NEWACTION('AuditExample|save', {
	input: '*name:String',
	audit: 'Saved the example',
	action: function($) {
		$.callback({ ok: true });
	}
});

NEWACTION('AuditExample|explicit', {
	action: function($) {
		$.audit('Explicit example event', 'info');
		$.success();
	}
});

NEWACTION('AuditExample|fail', {
	audit: 'This must not become a success event',
	action: function($) {
		$.invalid(409);
	}
});
controllers/audit.js
exports.install = function() {
	ROUTE('POST /save/ --> *AuditExample|save');
	ROUTE('POST /explicit/ --> *AuditExample|explicit');
	ROUTE('POST /fail/ --> *AuditExample|fail');
	ROUTE('GET /events/', function($) { $.json(MAIN.auditEvents); });
};