Aller au contenu

Administration

Cette page s'adresse aux administrateurs de MyAstreinte (rôle admin). Elle couvre la connexion des utilisateurs via le portail MesMy (SSO OpenID Connect). Les tâches d'exploitation courantes (événements, équipe, créneaux) restent décrites dans le Guide Manager.

Authentification via MesMy (OIDC)

MyAstreinte peut déléguer l'authentification et la gestion des identités au portail MesMy (fournisseur d'identité OpenID Connect). Dans ce mode :

  • MesMy devient la source des comptes : nom, email, téléphone, identifiant Slack, rôles et droit d'accès viennent du portail.
  • MyAstreinte conserve en local uniquement les données métier (appartenance aux événements, créneaux, inscriptions, blocages, quotas, échanges…), reliées à l'utilisateur.
  • À chaque connexion, le compte local est synchronisé à partir du profil MesMy (provisioning « juste-à-temps »).

Additif et réversible

L'intégration est désactivée par défaut. Tant qu'elle n'est pas activée, la connexion interne (email + mot de passe) reste le fonctionnement normal. Elle sert aussi de secours : n'active MesMy qu'après l'avoir testée.

Où se configure-t-elle ?

Barre du haut → Gestion des événements → bouton « Authentification (MesMy / OIDC) » (visible uniquement pour un administrateur).

Prérequis côté MesMy

Enregistrer une application (client) pour MyAstreinte dans MesMy, et récupérer :

  • le Client ID et le Client secret ;
  • déclarer l'URL de redirection (redirect_uri) exacte — pas de wildcard :

    https://app.myastreinte.fr/api/auth/oidc/callback
    

    (elle est aussi affichée, prête à copier, dans l'écran de configuration).

  • déclarer l'URL de post-déconnexion (post_logout_redirect_uri), là aussi en correspondance exacte :

    https://app.myastreinte.fr/
    

    Elle permet, à la déconnexion, de terminer la session du portail puis de ramener l'utilisateur sur l'écran de connexion MyAstreinte (voir « Déconnexion » ci-dessous). Elle est également affichée dans l'écran de configuration.

  • attribuer explicitement l'application à chaque utilisateur autorisé (« Applications autorisées » sur sa fiche). C'est ce qui fait apparaître le Client ID dans le claim apps (l'option « visible par tous » ne suffit pas).

Champs de configuration

Champ Rôle
Activer la connexion via MesMy Interrupteur global. Désactivé = connexion interne uniquement.
Issuer URL du portail, ex. https://auth.mesmy.fr (base du discovery OIDC).
Client ID Identifiant du client MyAstreinte dans MesMy.
Client secret Secret du client (jamais réaffiché ; laisser vide pour conserver l'existant).
Scopes Par défaut openid profile email phone mesmy_roles.
Rôles → admin / manager Rôles MesMy (séparés par des virgules) donnant les droits admin / manager de l'app.
Redirect URI Lecture seule — à déclarer côté MesMy.

Contrôle d'accès et rôles

  • Accès à l'application : autorisé seulement si le Client ID de MyAstreinte figure dans le claim apps de l'utilisateur (attribution explicite dans MesMy). Sinon, la connexion est refusée avec un message d'accès manquant.
  • Rôles : le claim roles de MesMy (ex. ["admin","user"]) est traduit vers les rôles de l'app selon le mapping configuré. Par défaut : superadminadmin, adminmanager, tout le reste → membre.

Migration des managers actuels

Le rôle est resynchronisé à chaque connexion depuis MesMy. Avant d'activer MesMy, assure-toi que tes managers/admins actuels ont bien le rôle correspondant côté MesMy — sinon ils repasseront « membre » à leur prochaine connexion.

Managers délégués par événement

Le statut de manager délégué d'un événement précis (voir le Guide Manager, §2.4) n'est pas un rôle MesMy : il est propre à MyAstreinte et n'est donc jamais écrasé par la resynchronisation du rôle à la connexion.

Déconnexion

La déconnexion depuis MyAstreinte réalise un logout complet : elle révoque la session locale et termine la session du portail MesMy (RP-initiated logout via l'end_session_endpoint), puis ramène l'utilisateur sur l'écran de connexion MyAstreinte. Ça évite de laisser une session MesMy ouverte inutilement (et donc une reconnexion « silencieuse » non désirée). Pour que la redirection finale fonctionne, l'URL de post-déconnexion ci-dessus doit être déclarée pour le client dans MesMy.

Ce qui change pour les utilisateurs

  • Ils se connectent via « Se connecter avec MesMy » ; ils n'ont plus de mot de passe propre à MyAstreinte.
  • Nom, email, téléphone et identifiant Slack proviennent de MesMy et se mettent à jour à chaque connexion (l'édition locale du mobile est donc écrasée).
  • Un compte local existant est rattaché automatiquement par son email à la première connexion MesMy : ses inscriptions et son historique sont conservés.
  • La préparation d'équipe reste possible : ajouter une personne par email à un événement ; l'appartenance devient effective quand elle se connecte.

Supprimer un utilisateur

Avec MesMy comme source d'identité :

  • Retirer de l'événement reste le geste courant (l'utilisateur n'est plus membre de cet événement, son compte est conservé).
  • Couper l'accès à MyAstreinte se fait dans MesMy (retirer l'application de ses « applications autorisées »). Effacer les données locales ne suffit pas : si l'app lui est toujours attribuée, le compte est recréé à sa prochaine connexion.

Déploiement et test

À vérifier avant d'activer en production

L'intégration doit être testée contre MesMy (idéalement sur un environnement de test) avant d'être activée pour tout le monde.

Étapes de mise en service :

  1. Déployer la version incluant l'OIDC (migration de base appliquée au démarrage du backend).
  2. Enregistrer le client dans MesMy (Client ID/secret + redirect_uri exact) et attribuer l'app aux comptes concernés.
  3. Dans l'admin MyAstreinte, renseigner la configuration OIDC sans encore l'activer.
  4. Vérifier le mapping des rôles (managers/admins présents côté MesMy).
  5. Tester le parcours de connexion (voir ci-dessous), puis activer l'interrupteur.

Checklist de test :

  1. Bouton « Se connecter avec MesMy » présent sur l'écran de connexion.
  2. Connexion réussie → retour dans l'application, session active.
  3. Un compte sans l'app dans ses autorisations → accès refusé.
  4. Un compte avec le rôle MesMy attendu → bien manager / admin dans l'app.
  5. Téléphone et Slack remontés depuis MesMy ; un membre existant est bien rattaché par email (inscriptions conservées).

Dépannage

  • « Le portail MesMy est injoignable » : l'app n'a pas pu lire le document de découverte. Vérifie que l'Issuer est bien la base seule (https://auth.mesmy.fr, sans /auth ni /.well-known/...), et que le backend a bien un accès réseau sortant vers le portail.
  • « La connexion via MesMy a échoué » juste après l'écran MesMy, avec error=invalid_scope : un scope demandé n'est pas autorisé pour ce client. Le plus courant est phone : soit tu l'autorises pour le client dans MesMy, soit tu le retires des scopes (openid profile email mesmy_roles) — dans ce cas le téléphone ne se synchronise plus depuis MesMy.
  • error=forbidden : l'utilisateur n'a pas MyAstreinte dans ses applications autorisées → attribue l'app à son compte dans MesMy.
  • Managers redevenus « membres » après connexion : leur rôle MesMy ne correspond pas au mapping. Corrige côté MesMy (ou ajuste les listes de rôles admin/manager dans la config).