ForgeTotal.js 5
fr

Total.js 5

Enregistrez les événements d’audit d’action avec un récepteur d’audit natif

Total.js 5 · total5@0.0.19 actionsauditsecurity Exécutée avec Total.js 5

Une action peut définir audit comme un modèle de texte. À la fin réussie, le framework envoie un enregistrement d'audit à DEF.onAudit(name, data, context). L'enregistrement automatique utilise le nom de puits actions et inclut l'id de l'action. Une action peut aussi appeler explicitement $.audit(message, type) ; cela émet son propre enregistrement et peut porter un type comme info.

L'exemple remplace le puits d'audit par un collecteur en mémoire pour inspecter son contrat. Il n'enregistre que le nom, l'id de l'action, le message et le type. Le framework prépare aussi des données de contexte et des données de requête sérialisées : un vrai puits a besoin d'une politique explicite pour les secrets, la conservation, l'accès et les échecs. Un événement d'audit n'est pas la preuve qu'une transaction métier a été validée ; l'action ne doit appeler son callback de succès qu'après la réussite de l'écriture prévue.

Dans cette version, l'événement d'audit automatique se produit après le chemin de récupération d'action réussie. il n'enregistre pas automatiquement les erreurs de validation ou les actions échouées.

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); });
};