AGN
È
S
Since & Co — Espace fichiers
Accueil
2
dossiers
14
fichiers
Tout générer (13)
Retour
super-admin-guide.md
# Guide Super Admin — Plateforme By Since ## À qui s'adresse ce guide ? Ce guide est destiné aux utilisateurs ayant le rôle **ROLE_SUPER_ADMIN**. Ce rôle donne un accès illimité à l'ensemble du système, toutes organisations confondues. --- ## 1. Hiérarchie des rôles | Rôle | Hérite de | Description | |---|---|---| | `ROLE_USER` | — | Apprenant standard | | `ROLE_CONSULTATION` | ROLE_USER | Consultation sans modification | | `ROLE_ADMIN` | ROLE_CONSULTATION | Administrateur d'organisation | | `ROLE_SUPER_ADMIN` | ROLE_ADMIN | Administrateur système global | | `ROLE_DEV` | ROLE_SUPER_ADMIN | Développeur (accès technique étendu) | | `ROLE_SINCE` | ROLE_SUPER_ADMIN | Rôle interne By Since | **Règle fondamentale :** le SUPER_ADMIN dispose automatiquement de **tous les droits applicatifs** (via le RightManager). Il n'a pas besoin d'un profil de droits particulier. --- ## 2. Système des droits applicatifs (Profils & Droits) Le système de droits fonctionne sur **deux niveaux indépendants** : - **Rôles Symfony** (ROLE_ADMIN, ROLE_SUPER_ADMIN…) — contrôlent l'accès aux pages et fonctions système. - **Droits applicatifs** (via Profils) — contrôlent les fonctions métier (ex. `LEARNING_PATH_ADMIN`, `SIC_EDIT`, `THEME_WRITE`…). ### Comment fonctionnent les profils Un utilisateur reçoit ses droits métier via un **profil** (ex. "Admin", "Rédacteur"…). Chaque profil porte une liste de droits. > ⚠️ Un utilisateur avec `ROLE_CONSULTATION` peut avoir accès à des fonctions avancées s'il est rattaché à un profil qui porte ces droits (comme vu avec l'accès aux parcours). Toujours vérifier le profil, pas seulement le rôle. ### Droits importants à connaître | Droit | Fonctionnalité débloquée | |---|---| | `LEARNING_PATH_ADMIN` | Créer et administrer les parcours apprenants | | `SIC_EDIT` | Éditer les activités | | `THEME_WRITE` | Modifier les thèmes | | `USER_INDEX` | Accéder à la liste des utilisateurs | | `BASE` | Accès de base à la plateforme | > Les `ROLE_ADMIN` reçoivent automatiquement `LEARNING_PATH_ADMIN` sans avoir besoin d'un profil. ### Gérer les profils Dans la console admin : **Profils** (menu visible SUPER_ADMIN uniquement) - Créer/modifier un profil - Ajouter ou retirer des droits à un profil - Activer/désactiver un profil Pour retirer un droit à un utilisateur : aller dans sa fiche utilisateur et **changer ou retirer son profil**. --- ## 3. Gestion des utilisateurs ### Ce que le SUPER_ADMIN peut faire (que l'ADMIN ne peut pas) - Voir et modifier les utilisateurs de **toutes les organisations** - Attribuer le rôle `ROLE_SUPER_ADMIN` à un utilisateur - Modifier la fiche d'un utilisateur SUPER_ADMIN existant - Accéder aux **Groupes** d'utilisateurs (menu dédié) > ⚠️ Un ADMIN ne peut pas modifier un utilisateur qui a le rôle SUPER_ADMIN. Cette protection est volontaire. ### Changer le rôle d'un utilisateur Console admin → **Utilisateurs** → fiche utilisateur → champ "Rôles". ### Impersonnation (se connecter en tant que) Disponible pour ROLE_ADMIN et ROLE_SUPER_ADMIN : - Dans la fiche utilisateur, bouton "Se connecter en tant que" - Pour quitter : `?_switch_user=_exit` dans l'URL, ou bouton dédié dans le menu --- ## 4. Gestion des organisations Le SUPER_ADMIN voit et peut modifier **toutes les organisations** de la plateforme. ### Accès Console admin → **Organisations** ### Ce qui est exclusif SUPER_ADMIN | Fonctionnalité | Emplacement | |---|---| | Voir toutes les organisations | Console admin → Organisations | | Modifier n'importe quelle organisation | Fiche organisation | | Import massif d'utilisateurs | Fiche organisation → onglet Import | | Gérer les profils de droits | Fiche organisation → onglet Profils | | Configurer le prompt IA personnalisé | Fiche organisation → onglet IA | ### Supprimer une organisation (CLI uniquement) ```bash php bin/console bysince:organisation:delete --id=XX ``` - Demande plusieurs confirmations dont la saisie exacte du nom - Génère automatiquement un export de sauvegarde avant suppression - **L'option `--all` est bloquée en production** ### Restaurer une organisation (CLI uniquement) ```bash php bin/console bysince:organisation:restore ``` - Restaure depuis les exports dans `data/Exports/Deleted_Organisations/` - Détecte les conflits d'ID et propose des options --- ## 5. Gestion du contenu (Activités & Thèmes) ### Thèmes Menu **Thèmes** visible uniquement par le SUPER_ADMIN. - Voir et modifier les thèmes de **toutes les organisations** - Copier un thème d'une organisation vers une autre - Gérer les thèmes globaux (partagés) ### Activités - Le SUPER_ADMIN peut éditer **toutes les activités** même celles avec `restricted_to_owners = true` - Cette règle est dans `Activity::canEdit()` : les SUPER_ADMIN court-circuitent la restriction ### Export/Import SIC | Action | SUPER_ADMIN | ADMIN | |---|---|---| | Exporter les activités de son organisation | ✅ | ✅ | | Exporter les activités d'une autre organisation | ✅ | ❌ | | Importer pour n'importe quelle organisation | ✅ (sélecteur) | ❌ (sa propre org) | --- ## 6. Bibliothèque d'images Deux sections distinctes dans la console admin : ### A. Bibliothèque d'images (CRUD) Accessible à tous les ADMIN. Permet de gérer le stock d'images importées : - Lister, ajouter, modifier, supprimer des images - Images stockées dans `public/uploads/images/` - Metadata : titre, source, attribution, licence, tags - Sources possibles : Upload manuel, Pexels, Unsplash, Pixabay, Wikimedia, Flickr ### B. Association images (SUPER_ADMIN uniquement) Outil pour assigner des images aux activités et thèmes qui n'en ont pas encore. **Fonctionnement :** 1. Affiche toutes les entités (activités, thèmes) **sans image** 2. Pour chaque entité : propose des suggestions depuis la bibliothèque (triées par tags communs) 3. Onglet "Recherche en ligne" : cherche chez les providers externes (Wikimedia en priorité, puis Pexels, Unsplash…) - **Recherche automatique** (baguette ✨) : utilise les tags de l'entité - **Recherche libre** : saisie manuelle de mots-clés 4. En cliquant sur une image → elle est importée et assignée en un clic --- ## 7. Ressources globales (SUPER_ADMIN uniquement) Ces sections du menu admin sont visibles uniquement par le SUPER_ADMIN : | Section | Utilité | |---|---| | **Profils** | Gérer les profils de droits | | **Groupes** | Gérer les groupes d'utilisateurs | | **Thèmes** | Voir et modifier tous les thèmes | | **Glossaire** | Gérer le glossaire global | | **Tutoriels** | Gérer les tutoriels de la plateforme | | **Règles de rédaction** | Gérer les règles de rédaction des activités | | **Attributs de composant** | Gérer les attributs des composants | | **Bibliothèque d'images** | Stock d'images + association | | **Revue IA** | Consulter les revues AFEST par organisation | --- ## 8. Tableau de bord — données analytiques Le SUPER_ADMIN voit un tableau de bord enrichi : - Graphiques globaux (toutes organisations confondues) - Nombre total d'utilisateurs sur le système - Organisations actives - Statistiques apprenants globales - Revues IA par organisation (détail) Les ADMIN ne voient que les données de leur propre organisation. --- ## 9. Changelog et informations techniques Dans la page **Changelog** (version / nouveautés) : - Le SUPER_ADMIN voit les **liens vers les issues GitHub** associées à chaque version - Accès aux notes techniques sur les corrections de bugs --- ## 10. Commandes CLI importantes Ces commandes se lancent en SSH sur le serveur. Elles nécessitent un accès au serveur, pas le rôle SUPER_ADMIN dans l'interface. ### Gestion des organisations ```bash # Supprimer une organisation (avec export automatique) php bin/console bysince:organisation:delete --id=XX # Restaurer une organisation supprimée php bin/console bysince:organisation:restore # Exporter le SIC de toutes les organisations php bin/console bysince:export:all-organisations ``` ### Gestion des utilisateurs ```bash # Changer le mot de passe d'un utilisateur php bin/console bysince:user:change-password # Supprimer un utilisateur php bin/console bysince:user:delete ``` ### Sauvegarde base de données ```bash # Créer une sauvegarde manuelle php bin/console bysince:backup:create # Gérer les sauvegardes (lister, nettoyer) php bin/console bysince:backup:manage ``` ### Audit de sécurité ```bash # Audit complet des routes et permissions php bin/console bysince:security:audit # Nettoyage des données de sécurité php bin/console bysince:security:cleanup ``` ### Maintenance contenu ```bash # Nettoyer les fichiers médias orphelins php bin/console bysince:cleanup # Générer les images manquantes php bin/console bysince:generate:all-images # Vérifier les ressources obsolètes php bin/console bysince:check:obsolete-resources ``` > ⚠️ En production, certaines commandes destructives demandent des confirmations multiples et la saisie exacte d'un nom. Il n'est pas possible de les annuler une fois exécutées. --- ## 11. Points de vigilance ### Profil vs Rôle > Un utilisateur peut avoir `ROLE_CONSULTATION` mais être rattaché à un profil "Admin" qui lui donne `LEARNING_PATH_ADMIN`. Toujours vérifier les **deux** : le rôle ET le profil. ### Modifier un SUPER_ADMIN > Seul un autre SUPER_ADMIN peut modifier la fiche d'un utilisateur SUPER_ADMIN. Un ADMIN sera bloqué. ### Activités avec `restricted_to_owners` > Le SUPER_ADMIN peut toujours éditer et publier une activité, même si elle est restreinte aux propriétaires. C'est voulu mais à utiliser avec précaution. ### Commandes `--all` en production > L'option `--all` sur les commandes de suppression est **bloquée en production**. Il faut cibler un ID précis. ### Impersonnation > Quand vous êtes connecté en tant qu'un autre utilisateur, un bandeau vous l'indique. N'oubliez pas de quitter l'impersonnation (`?_switch_user=_exit`) avant de faire des modifications. --- ## 12. Accès rapide — URLs utiles | Page | URL | |---|---| | Console admin | `/fr/admin` | | Liste utilisateurs | `/fr/admin?crudAction=index&crudControllerFqcn=...UserCrudController` | | Liste organisations | `/fr/admin?crudAction=index&crudControllerFqcn=...OrganisationCrudController` | | Bibliothèque images | `/fr/admin?crudAction=index&crudControllerFqcn=...LibraryImageCrudController` | | Association images | `/fr/admin/image-association` | | Parcours apprenants | `/fr/learning_path/index` | | Changelog | `/fr/changelog` |