Accueil · Guide de démarrage · Choisir mon rôle · Je saisis une intervention · Je valide pour ma région · Je valide au niveau central · Je consulte · J'administre la plateforme
Destiné aux administrateurs uniquement. CloudBeaver donne un accès direct à la base de données : cet outil demande une manipulation prudente.
CloudBeaver est une interface d'accès à la base de données PostgreSQL de la plateforme, depuis un navigateur.
Il sert à trois choses, et à trois choses seulement :
imis.utilisateurs, en complément de leur création dans Keycloak,Il ne sert pas à corriger une intervention à la place de son auteur, ni à contourner le circuit de validation.
Les administrateurs désignés uniquement. Deux administrateurs au minimum sont désignés à tout moment, un côté OMS Togo et un côté Banque mondiale.
Aucun autre rôle n'a accès à CloudBeaver, ni ne doit en demander l'accès.
imis_ptfs.imis.Vérifiez toujours, en haut de la fenêtre, que vous êtes bien connecté à la base imis_ptfs. Une manipulation sur la mauvaise base est une des rares erreurs difficiles à rattraper.
Ces trois points reviennent à chaque session. Ils ne sont pas facultatifs.
Le search_path doit inclure imis et public. Sans cela, les tables ne sont pas trouvées et vous obtenez des messages d'erreur incompréhensibles. La configuration standard applique cette règle automatiquement, mais il faut savoir la vérifier.
SHOW search_path;
-- doit renvoyer : imis, public
SET search_path TO imis, public;
-- pour la fixer en début de session si besoin
Pour exécuter plusieurs instructions à la suite, passez en mode script. Le raccourci est Alt+X. En mode instruction unique, un script contenant plusieurs blocs échoue au premier point-virgule.
Avant toute mise à jour ou suppression, comptez les lignes concernées. Exécutez d'abord la même clause WHERE avec un SELECT, pour vérifier que vous touchez bien à ce que vous croyez toucher.
-- Vérification avant
SELECT COUNT(*) FROM imis.utilisateurs WHERE email = 'user@example.com';
-- Mise à jour ensuite, seulement si le compte est bon
UPDATE imis.utilisateurs SET actif = false WHERE email = 'user@example.com';
L'interface se compose de trois zones.
Le navigateur de bases (à gauche). L'arborescence des schémas, tables et vues. Vous pouvez déplier imis_ptfs → imis pour voir les tables.
L'éditeur SQL (au centre). L'espace où vous écrivez vos requêtes. Un onglet par script ouvert.
Le résultat (en bas). Le tableau des lignes retournées, ou le message de succès pour une modification.
Un raccourci utile : sélectionnez une table dans le navigateur, cliquez droit, puis Read Data in SQL Console. CloudBeaver écrit à votre place la requête SELECT * FROM … correspondante.
Exemple 1 : ajouter un nouvel utilisateur après création dans Keycloak.
L'administrateur a d'abord créé le compte dans Keycloak. Il ouvre CloudBeaver pour créer la ligne miroir dans la base.
INSERT INTO imis.utilisateurs
(prenom, nom, email, role, niveau_geo, id_region, actif)
VALUES
('Awa', 'Kone', 'akone@partenaire.org', 'saisie', 'national', NULL, true);
L'adresse email doit être rigoureusement identique dans Keycloak et dans la base : c'est elle qui fait le lien.
Exemple 2 : désactiver un compte suite au départ d'un agent.
-- Vérification avant
SELECT id_utilisateur, prenom, nom, actif
FROM imis.utilisateurs
WHERE email = 'agent.parti@partenaire.org';
-- Désactivation ensuite
UPDATE imis.utilisateurs
SET actif = false
WHERE email = 'agent.parti@partenaire.org';
On désactive, on ne supprime pas. La suppression casserait la traçabilité des interventions saisies ou validées par cette personne.
Exemple 3 : ajouter un nouveau partenaire dans le référentiel.
INSERT INTO imis.partenaires
(acronyme, nom, type_partenaire, pays_origine, actif)
VALUES
('KOICA', 'Korea International Cooperation Agency', 'bilateral', 'Corée du Sud', true);
Vérifiez que l'acronyme n'existe pas déjà avant l'insertion : la contrainte d'unicité renverra sinon une erreur.
Ce qui se fait ici :
imis.utilisateurs),imis.partenaires),imis.referentiel_termes),imis.audit_log).Ce qui ne se fait pas ici :
En cas de doute, ne modifiez pas et demandez l'avis du second administrateur avant d'agir.
Un exemple simple, qui illustre pourquoi le mode script est nécessaire.
-- Trois instructions à exécuter ensemble
BEGIN;
UPDATE imis.utilisateurs SET role = 'validation_region', id_region = 3
WHERE email = 'validateur.savanes@ministere.org';
INSERT INTO imis.audit_log (utilisateur_id, table_cible, action, donnees_apres)
VALUES (current_app_user_id(), 'utilisateurs', 'UPDATE',
jsonb_build_object('email', 'validateur.savanes@ministere.org',
'role', 'validation_region'));
COMMIT;
Sans le mode script activé (Alt+X), CloudBeaver s'arrête au premier point-virgule et laisse la transaction ouverte. Résultat : la mise à jour n'est pas appliquée et vous ne voyez pas d'erreur claire.
Vérifiez en bas de fenêtre que le mode « Script » est bien sélectionné.
imis_ptfs avant d'exécuter. Une requête tapée sur la mauvaise base peut renvoyer des résultats trompeurs.UPDATE ou un DELETE sans WHERE. Si la sécurité de la base ne vous en protège pas, vous modifiez toute la table.WHERE id = 42 collé dans le mauvais contexte est difficile à défaire.Vous avez exécuté une requête et un doute s'installe. Ne fermez pas la fenêtre. Ouvrez immédiatement le journal d'audit pour voir ce qui a été modifié :
SELECT * FROM imis.audit_log
ORDER BY cree_le DESC
LIMIT 10;
Une modification a affecté plus de lignes que prévu. Contactez le second administrateur avant de tenter une correction. Une réparation à froid vaut mieux qu'une réparation à chaud dans la panique.
Un message d'erreur apparaît et vous n'êtes pas sûr de sa signification. Copiez-le tel quel, prenez une capture d'écran, et interrogez l'équipe technique avant d'insister.
Aucune manipulation urgente ne justifie de bousculer ces trois réflexes.
Question technique sur CloudBeaver ou sur la base : gtounkara@worldbank.org
Question sur le contenu métier des tables (référentiels, indicateurs) : nganhyima@who.int
Contenu, domaines, indicateurs
Dr. Auréole Nganhyim, OMS Togo : nganhyima@who.int
Accès, technique, administration
Gary Tounkara, Banque mondiale : gtounkara@worldbank.org