DocumentationDocumentationDocumentaçãoDocumentación / Procédures AdminAdmin proceduresProcedimentos AdminProcedimientos Admin
ADMIN_PLATFORM
Procédures AdminAdmin proceduresProcedimentos AdminProcedimientos 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.
The RMS admin's operational guide: create Keycloak accounts (the central task), onboard a manager, supervise the platform, bill and suspend.
O guia operacional do admin RMS: criar as contas Keycloak (a tarefa central), integrar um gestor, supervisionar a plataforma, faturar e suspender.
La guía operativa del admin RMS: crear las cuentas Keycloak (la tarea central), incorporar un gestor, supervisar la plataforma, facturar y suspender.
Rôle & vue d'ensembleRole & overviewFunção & visão geralRol y visión general
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.
The admin (ADMIN_PLATFORM, RMS) is the platform owner. Opens and closes manager accounts, sets plans, monitors consolidated revenue and overall security. They never step into a single tontine: creating a group, adding participants or paying out is the manager's job.
O admin (ADMIN_PLATFORM, RMS) é o proprietário da plataforma. Abre e fecha as contas de gestor, define os planos, monitoriza as receitas consolidadas e a segurança global. Nunca intervém numa tontina individual: criar um grupo, adicionar participantes ou desembolsar é tarefa do gestor.
El admin (ADMIN_PLATFORM, RMS) es el propietario de la plataforma. Abre y cierra las cuentas de gestor, fija los planes, vigila los ingresos consolidados y la seguridad global. Nunca interviene en una tanda individual: crear un grupo, añadir participantes o desembolsar es tarea del gestor.
🔒La règle d'or : isolation par tenantThe golden rule: tenant isolationA regra de ouro: isolamento por tenantLa regla de oro: aislamiento por 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).
Each manager operates in a fully partitioned space, identified by a tenantId. A manager never sees another's data. This tenantId is carried by the sign-in token (JWT) — so everything hinges on the Keycloak account being set up correctly (next section).
Cada gestor opera num espaço totalmente compartimentado, identificado por um tenantId. Um gestor nunca vê os dados de outro. Este tenantId é transportado pelo token de acesso (JWT) — tudo depende, portanto, da configuração correta da conta Keycloak (secção seguinte).
Cada gestor opera en un espacio totalmente compartimentado, identificado por un tenantId. Un gestor nunca ve los datos de otro. Este tenantId lo lleva el token de acceso (JWT) — por lo que todo depende de que la cuenta Keycloak esté bien configurada (sección siguiente).
Chronologie côté adminAdmin-side chronologyCronologia do adminCronología del admin
Onboarder le gestionnaireOnboard the managerIntegrar o gestorIncorporar el gestor
→
Créer son compte KeycloakCreate its Keycloak accountCriar a conta KeycloakCrear su cuenta Keycloak
→
Superviser (KPIs)Supervise (KPIs)Supervisionar (KPIs)Supervisar (KPIs)
→
FacturerBillFaturarFacturar
→
Suspendre si besoinSuspend if neededSuspender se necessárioSuspender si hace falta
Créer les comptes KeycloakCreate the Keycloak accountsCriar as contas KeycloakCrear las cuentas 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.
Keycloak: https://iam.rms-dev.grouperms.com. Realm sikaflow (prod) or sikaflow-preprod (preprod). SPA client sikaflow-web (PKCE). Three realm roles: ADMIN_PLATFORM, MANAGER, PARTICIPANT.
Keycloak: https://iam.rms-dev.grouperms.com. Realm sikaflow (prod) ou sikaflow-preprod (preprod). Cliente SPA sikaflow-web (PKCE). Três funções realm: ADMIN_PLATFORM, MANAGER, PARTICIPANT.
Keycloak: https://iam.rms-dev.grouperms.com. Realm sikaflow (prod) o sikaflow-preprod (preprod). Cliente SPA sikaflow-web (PKCE). Tres roles realm: ADMIN_PLATFORM, MANAGER, PARTICIPANT.
🔑Le claim tenantId est la clé de voûteThe tenantId claim is the keystoneO claim tenantId é a pedra angularEl claim tenantId es la clave
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 »).
The JWT claim tenantId (= the manager's id) is injected by the sikaflow-tenant client scope, which reads the user attribute tenantId. This claim isolates all data on the API side. A MANAGER account without a tenantId attribute is rejected by the API ("Manager token missing tenantId claim").
O claim JWT tenantId (= o identificador do gestor) é injetado pelo client scope sikaflow-tenant, que lê o atributo de utilizador tenantId. É este claim que isola todos os dados no lado da API. Uma conta MANAGER sem atributo tenantId é rejeitada pela API ("Manager token missing tenantId claim").
El claim JWT tenantId (= el identificador del gestor) lo inyecta el client scope sikaflow-tenant, que lee el atributo de usuario tenantId. Este claim aísla todos los datos en el lado de la API. Una cuenta MANAGER sin atributo tenantId es rechazada por la API ("Manager token missing tenantId claim").
Voie rapide — le script (comptes de démo)Fast path — the script (demo accounts)Via rápida — o script (contas de demo)Vía rápida — el script (cuentas demo)
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.
The script infra/create-keycloak-test-users.sh creates in one go a demo admin, manager and participant, each with the right role and attributes (tenantId, plus participantId for the participant). Idempotent: safe to re-run.
O script infra/create-keycloak-test-users.sh cria de uma vez um admin, um gestor e um participante de demo, cada um com a função e os atributos corretos (tenantId, e participantId para o participante). Idempotente: pode ser reexecutado sem risco.
El script infra/create-keycloak-test-users.sh crea de una vez un admin, un gestor y un participante demo, cada uno con el rol y los atributos correctos (tenantId, y participantId para el participante). Idempotente: se puede reejecutar sin riesgo.
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 KeycloakManual path — the Keycloak admin consoleVia manual — a consola de admin KeycloakVía manual — la consola de admin Keycloak
-
Créer l'utilisateurCreate the userCriar o utilizadorCrear el usuario
Realm sikaflow → Users → Add user : renseigner username/email, Email verified = ON.Realm sikaflow → Users → Add user: fill in username/email, Email verified = ON.Realm sikaflow → Users → Add user: preencher username/email, Email verified = ON.Realm sikaflow → Users → Add user: rellenar username/email, Email verified = ON.
-
Ajouter les attributsAdd the attributesAdicionar os atributosAñadir los atributos
Onglet Attributes : ajouter tenantId = <id du gestionnaire>. Pour un participant, ajouter aussi participantId = <id du participant>. (Pour l'admin, tenantId = PLATFORM.)Attributes tab: add tenantId = <manager id>. For a participant, also add participantId = <participant id>. (For the admin, tenantId = PLATFORM.)Separador Attributes: adicionar tenantId = <id do gestor>. Para um participante, adicionar também participantId = <id do participante>. (Para o admin, tenantId = PLATFORM.)Pestaña Attributes: añadir tenantId = <id del gestor>. Para un participante, añadir también participantId = <id del participante>. (Para el admin, tenantId = PLATFORM.)
-
Assigner le rôleAssign the roleAtribuir a funçãoAsignar el rol
Onglet Role mapping → Assign role : rôle realm MANAGER (ou PARTICIPANT, ou ADMIN_PLATFORM).Role mapping tab → Assign role: realm role MANAGER (or PARTICIPANT, or ADMIN_PLATFORM).Separador Role mapping → Assign role: função realm MANAGER (ou PARTICIPANT, ou ADMIN_PLATFORM).Pestaña Role mapping → Assign role: rol realm MANAGER (o PARTICIPANT, o ADMIN_PLATFORM).
-
Définir un mot de passe temporaireSet a temporary passwordDefinir uma palavra-passe temporáriaDefinir una contraseña temporal
Onglet Credentials → Set password, Temporary = ON. Le changement sera forcé au premier login.Credentials tab → Set password, Temporary = ON. The change is forced at first login.Separador Credentials → Set password, Temporary = ON. A alteração é forçada no primeiro acesso.Pestaña Credentials → Set password, Temporary = ON. El cambio se fuerza en el primer acceso.
ℹ️OTP obligatoire pour tousOTP mandatory for everyoneOTP obrigatório para todosOTP obligatorio para todos
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.The realm enforces OTP. At the very first login, the user changes their password then sets up an authenticator app (scanning a TOTP QR). This multi-step flow is normal and mandatory.O realm impõe o OTP. No primeiro acesso, o utilizador muda a palavra-passe e depois configura uma aplicação de autenticação (leitura de um QR TOTP). Este percurso em várias etapas é normal e obrigatório.El realm impone el OTP. En el primer acceso, el usuario cambia su contraseña y luego configura una aplicación de autenticación (escaneo de un QR TOTP). Este recorrido en varios pasos es normal y obligatorio.
Onboarder un gestionnaireOnboard a managerIntegrar um gestorIncorporar un gestor
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 :
Onboarding a manager is two distinct things: (a) creating the "tenant" record on the application side, and (b) creating their sign-in account on the Keycloak side. Two paths for the application part:
Integrar um gestor são duas coisas distintas: (a) criar o registo "tenant" no lado da aplicação, e (b) criar a conta de acesso no lado do Keycloak. Dois caminhos para a parte da aplicação:
Incorporar un gestor son dos cosas distintas: (a) crear el registro "tenant" en el lado de la aplicación, y (b) crear su cuenta de acceso en el lado de Keycloak. Dos caminos para la parte de la aplicación:
-
Depuis une candidatureFrom an applicationA partir de uma candidaturaDesde una candidatura
Le prospect remplit le formulaire public (POST /manager-applications). L'admin liste les candidatures (GET /manager-applications) et valide (PATCH /manager-applications/{id}).The prospect fills the public form (POST /manager-applications). The admin lists applications (GET /manager-applications) and validates (PATCH /manager-applications/{id}).O interessado preenche o formulário público (POST /manager-applications). O admin lista as candidaturas (GET /manager-applications) e valida (PATCH /manager-applications/{id}).El interesado rellena el formulario público (POST /manager-applications). El admin lista las candidaturas (GET /manager-applications) y valida (PATCH /manager-applications/{id}).
-
Création directeDirect creationCriação diretaCreación directa
POST /managers avec {companyName, email} (optionnels : contactName, phone, country, currencyDefault=XOF, planId=starter, status=trial) → crée l'enregistrement tenant (statut trial, forfait starter).POST /managers with {companyName, email} (optional: contactName, phone, country, currencyDefault=XOF, planId=starter, status=trial) → creates the tenant record (status trial, plan starter).POST /managers com {companyName, email} (opcionais: contactName, phone, country, currencyDefault=XOF, planId=starter, status=trial) → cria o registo tenant (estado trial, plano starter).POST /managers con {companyName, email} (opcionales: contactName, phone, country, currencyDefault=XOF, planId=starter, status=trial) → crea el registro tenant (estado trial, plan starter).
-
Créer le compte Keycloak MANAGERCreate the MANAGER Keycloak accountCriar a conta Keycloak MANAGERCrear la cuenta 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é.Create the user with the attribute tenantId = the manager id from step 2, and the MANAGER role (see previous section). Link via keycloakUserId if desired.Criar o utilizador com o atributo tenantId = o id do manager criado no passo 2, e a função MANAGER (ver secção anterior). Ligar via keycloakUserId se desejado.Crear el usuario con el atributo tenantId = el id del manager creado en el paso 2, y el rol MANAGER (ver sección anterior). Vincular vía keycloakUserId si se desea.
⚠️POST /managers ne crée PAS le compte KeycloakPOST /managers does NOT create the Keycloak accountPOST /managers NÃO cria a conta KeycloakPOST /managers NO crea la cuenta 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.The API call only creates the tenant record. Without the Keycloak account (bearing the matching tenantId attribute), the manager cannot sign in. Both steps are required.A chamada à API cria apenas o registo tenant. Sem a conta Keycloak (com o atributo tenantId correspondente), o gestor não consegue aceder. Ambas as etapas são indispensáveis.La llamada a la API solo crea el registro tenant. Sin la cuenta Keycloak (con el atributo tenantId correspondiente), el gestor no puede acceder. Ambos pasos son imprescindibles.
Forfaits & limitesPlans & limitsPlanos & limitesPlanes y límites
Trois paliers d'abonnement SaaS : Starter, Pro, Business. Le forfait est porté par le champ planId du gestionnaire (défaut starter).
Three SaaS subscription tiers: Starter, Pro, Business. The plan is carried by the manager's planId field (default starter).
Três escalões de subscrição SaaS: Starter, Pro, Business. O plano é transportado pelo campo planId do gestor (por defeito starter).
Tres niveles de suscripción SaaS: Starter, Pro, Business. El plan lo lleva el campo planId del gestor (por defecto starter).
⚠️Écran encore facticeScreen still stubbedEcrã ainda fictícioPantalla aún simulada
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é.The /admin/plans screen still serves mock data (STUB) even in live mode: don't treat it as the source of truth for plans until it is wired.O ecrã /admin/plans ainda serve dados fictícios (STUB) mesmo em modo live: não o tomar como fonte de verdade dos planos enquanto não estiver ligado.La pantalla /admin/plans aún sirve datos simulados (STUB) incluso en modo live: no tomarla como fuente de verdad de los planes hasta que esté conectada.
Supervision & facturationSupervision & billingSupervisão & faturaçãoSupervisión y facturación
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.
The consolidated dashboard (GET /dashboard/admin) aggregates metrics across all managers. Billing combines the optional subscriptions (Pro, Business) and the flat 25 % Sikaflow share of the manager commission, withheld at disbursement.
O painel consolidado (GET /dashboard/admin) agrega os indicadores de todos os gestores. A faturação combina as subscrições opcionais (Pro, Business) e a parte Sikaflow de 25 % da comissão do gestor, retida no desembolso.
El panel consolidado (GET /dashboard/admin) agrega los indicadores de todos los gestores. La facturación combina las suscripciones opcionales (Pro, Business) y la parte Sikaflow del 25 % de la comisión del gestor, retenida en el desembolso.
Sécurité & suspensionSecurity & suspensionSegurança & suspensãoSeguridad y suspensión
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.
Suspending a manager = disabling their Keycloak user (Users → Enabled = OFF) and/or setting their record status to suspended. Disabling the Keycloak account cuts access immediately.
Suspender um gestor = desativar o seu utilizador Keycloak (Users → Enabled = OFF) e/ou passar o status do seu registo para suspenso. Desativar a conta Keycloak corta o acesso imediatamente.
Suspender un gestor = desactivar su usuario Keycloak (Users → Enabled = OFF) y/o pasar el status de su registro a suspendido. Desactivar la cuenta Keycloak corta el acceso de inmediato.
⚠️Écran encore facticeScreen still stubbedEcrã ainda fictícioPantalla aún simulada
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.The /admin/security screen is also currently a STUB (mock data even in live). Real suspension is done today on the Keycloak side.O ecrã /admin/security é também atualmente um STUB (dados fictícios mesmo em live). A suspensão real faz-se hoje no lado do Keycloak.La pantalla /admin/security es también actualmente un STUB (datos simulados incluso en live). La suspensión real se hace hoy en el lado de Keycloak.