Administration déléguée : Hooks d’extension
Si vous êtes un utilisateur assigné au rôle Administrateur délégué - Administrateur vous pouvez gérer les différents hooks d’extension et requêtes qui vous permettent de personnaliser le comportement de l’extension Delegated Administration.
Pour accéder à la zone de configuration :
Connectez-vous au tableau de bord de Delegated Administration.
Cliquez sur votre nom dans le coin supérieur droit. Vous verrez un menu déroulant; cliquez sur l’option Configurer .
La page de Configuration vers laquelle vous êtes redirigé est l’endroit où vous pouvez gérer vos hooks et requêtes.
Contexte des hooks d’extension
L’objet de contexte (ctx) exposera quelques auxiliaires et des informations sur la requête actuelle. Les méthodes et propriétés suivantes sont disponibles dans chaque hook d’extension :
Journalisation
Mettre en cache
Données personnalisées
Charge utile et demande
Appels distants
Journalisation
Pour ajouter un message aux journaux Webtask (que vous pouvez consulter en utilisant l’extension Realtime Webtask Logs), faites appel à la méthode log :
function(ctx, callback) {
ctx.log('Logging action:', ctx.payload.action);
return callback();
}
Was this helpful?
Pour en savoir plus sur l’extension Realtime Webtask Log, lisez Journaux Realtime Webtask.
Mettre en cache
Pour mettre en cache quelque chose (comme une longue liste de départements), vous pouvez la stocker dans l’objet global du contexte Cet objet sera disponible jusqu’à ce que le conteneur Webtask soit recyclé.
function(ctx, callback) {
ctx.global.departments = [ 'IT', 'HR', 'Finance' ];
return callback();
}
Was this helpful?
Données personnalisées
Vous pouvez stocker des données personnalisées dans l’extension. Ce champ est limité à 400 Ko de données.
var data = {
departments: [ 'IT', 'HR', 'Finance' ]
};
ctx.write(data)
.then(function() {
// ...
})
.catch(function(err) {
// ...
});
Was this helpful?
Pour lire les données :
ctx.read()
.then(function(data) {
// ...
})
.catch(function(err) {
// ...
});
Was this helpful?
Charge utile et demande
Chaque hook d’extension expose la charge utile ou la demande en cours avec des informations spécifiques. La demande contiendra toujours des informations sur l’utilisateur connecté au Dashboard des utilisateurs :
function(ctx, callback) {
ctx.log('Current User:', ctx.request.user);
return callback();
}
Was this helpful?
Appels distants
Si vous souhaitez appeler un service externe (tel qu’une API) pour valider des données ou charger des adhésions, vous pouvez le faire en utilisant le module request
function(ctx, callback) {
var request = require('request');
request('http://api.mycompany.com/departments', function (error, response, body) {
if (error) {
return callback(error);
}
// ...
});
}
Was this helpful?
Contrat Hook
ctx
: L’objet du contextepayload
: L’objet de la charge utileaction
: L’action en cours d’exécution (par exemple,delete:user
)user
: L’utilisateur sur lequel l’action est exécutée
callback(error)
: Le rappel auquel vous pouvez renvoyer une erreur si l’accès est refusé
Exemples de cas d’utilisation
Kelly gère le département des Finances, et elle ne devrait pouvoir accéder qu’aux utilisateurs de son département.
function(ctx, callback) {
if (ctx.payload.action === 'delete:user') {
return callback(new Error('You are not allowed to delete users.'));
}
// Get the department from the current user's metadata.
var department = ctx.request.user.app_metadata && ctx.request.user.app_metadata.department;
if (!department || !department.length) {
return callback(new Error('The current user is not part of any department.'));
}
// The IT department can access all users.
if (department === 'IT') {
return callback();
}
ctx.log('Verifying access:', ctx.payload.user.app_metadata.department, department);
if (!ctx.payload.user.app_metadata.department || ctx.payload.user.app_metadata.department !== department) {
return callback(new Error('You can only access users within your own department.'));
}
return callback();
}
Was this helpful?
Si ce hook n’est pas configuré, tous les utilisateurs seront accessibles.
Noms d’actions pris en charge :
read:user
delete:user
reset:password
change:password
change:username
change:email
read:devices
read:logs
remove:multifactor-provider
block:user
unblock:user
send:verification-email
Hooks d’extension disponibles
Les hooks d’extension suivants sont disponibles pour une utilisation avec l’application Delegated Administration :