🔒Paiement 100 % sécurisé 🕐Support 24/7 🌍FedaPay & Stripe — Mobile Money & cartes

ADMIN_PLATFORM

Procédures Admin

Le guide opérationnel de l'admin RMS : créer les comptes Keycloak (le point central), onboarder un gestionnaire, superviser la plateforme, facturer et suspendre.

Rôle & vue d'ensemble

L'admin (ADMIN_PLATFORM, RMS) est le propriétaire de la plateforme. Il ouvre et ferme les comptes gestionnaires, fixe les forfaits, surveille les revenus consolidés et la sécurité de l'ensemble. Il n'intervient jamais dans une tontine individuelle : créer un groupe, ajouter des participants ou décaisser relève du gestionnaire.

🔒La règle d'or : isolation par tenant

Chaque gestionnaire opère dans un espace totalement cloisonné, identifié par un tenantId. Un gestionnaire ne voit jamais les données d'un autre. Ce tenantId est porté par le jeton de connexion (JWT) — tout dépend donc de la bonne configuration du compte Keycloak (section suivante).

Chronologie côté admin

Onboarder le gestionnaire → Créer son compte Keycloak → Superviser (KPIs) → Facturer → Suspendre si besoin

Créer les comptes Keycloak

Keycloak : https://iam.rms-dev.grouperms.com. Realm sikaflow (prod) ou sikaflow-preprod (préprod). Client SPA sikaflow-web (PKCE). Trois rôles realm : ADMIN_PLATFORM, MANAGER, PARTICIPANT.

🔑Le claim tenantId est la clé de voûte

Le claim JWT tenantId (= l'identifiant du gestionnaire) est injecté par le client scope sikaflow-tenant, qui lit l'attribut utilisateur tenantId. C'est ce claim qui isole toutes les données côté API. Un compte MANAGER sans attribut tenantId est rejeté par l'API (« Manager token missing tenantId claim »).

Voie rapide — le script (comptes de démo)

Le script infra/create-keycloak-test-users.sh crée en une fois un admin, un gestionnaire et un participant de démo, avec le bon rôle et les bons attributs (tenantId, et participantId pour le participant). Idempotent : relançable sans risque.

cd ~/RMS_Projects/sikaflow.grouperms.com/infra
KC_ADMIN_PASS='<mot_de_passe_admin_keycloak>' \
  TENANT_ID=mgr_demo TEST_PASSWORD='Sikaflow!Test1' \
  ./create-keycloak-test-users.sh

Voie manuelle — la console admin Keycloak

  1. Créer l'utilisateur

    Realm sikaflow → Users → Add user : renseigner username/email, Email verified = ON.

  2. Ajouter les attributs

    Onglet Attributes : ajouter tenantId = <id du gestionnaire>. Pour un participant, ajouter aussi participantId = <id du participant>. (Pour l'admin, tenantId = PLATFORM.)

  3. Assigner le rôle

    Onglet Role mapping → Assign role : rôle realm MANAGER (ou PARTICIPANT, ou ADMIN_PLATFORM).

  4. Définir un mot de passe temporaire

    Onglet Credentials → Set password, Temporary = ON. Le changement sera forcé au premier login.

ℹ️OTP obligatoire pour tous

Le realm impose l'OTP. Au tout premier login, l'utilisateur change son mot de passe puis configure une application d'authentification (scan d'un QR TOTP). Ce parcours multi-étapes est normal et obligatoire.

Onboarder un gestionnaire

Onboarder un gestionnaire, c'est deux choses distinctes : (a) créer l'enregistrement « tenant » côté application, et (b) créer son compte de connexion côté Keycloak. Deux chemins pour la partie application :

  1. Depuis une candidature

    Le prospect remplit le formulaire public (POST /manager-applications). L'admin liste les candidatures (GET /manager-applications) et valide (PATCH /manager-applications/{id}).

  2. Création directe

    POST /managers avec {companyName, email} (optionnels : contactName, phone, country, currencyDefault=XOF, planId=starter, status=trial) → crée l'enregistrement tenant (statut trial, forfait starter).

  3. Créer le compte Keycloak MANAGER
    Keycloak

    Créer l'utilisateur avec l'attribut tenantId = l'id du manager créé à l'étape 2, et le rôle MANAGER (voir section précédente). Relier via keycloakUserId si souhaité.

⚠️POST /managers ne crée PAS le compte Keycloak

L'appel API crée seulement l'enregistrement tenant. Sans le compte Keycloak (avec l'attribut tenantId correspondant), le gestionnaire ne peut pas se connecter. Les deux étapes sont indispensables.

Forfaits & limites

Trois paliers d'abonnement SaaS : Starter, Pro, Business. Le forfait est porté par le champ planId du gestionnaire (défaut starter).

⚠️Écran encore factice

L'écran /admin/plans sert encore des données factices (STUB) même en mode live : ne pas le prendre pour la source de vérité des forfaits tant qu'il n'est pas branché.

Supervision & facturation

Le tableau de bord consolidé (GET /dashboard/admin) agrège les indicateurs de tous les gestionnaires. La facturation combine les abonnements optionnels (Pro, Business) et la part Sikaflow de 25 % de la commission du tontinier, prélevée au décaissement.

Sécurité & suspension

Suspendre un gestionnaire = désactiver son utilisateur Keycloak (Users → Enabled = OFF) et/ou passer le status de son enregistrement à suspendu. Désactiver le compte Keycloak coupe immédiatement l'accès.

⚠️Écran encore factice

L'écran /admin/security est lui aussi un STUB actuellement (données factices même en live). La suspension réelle se fait aujourd'hui côté Keycloak.