Repository navigation
13 publication github
Public : développeurs et mainteneurs du projet.
Cette checklist doit être complétée avant de rendre le dépôt public sur GitHub. Elle couvre quatre axes : sécurité du code, nettoyage de l'historique git, conformité légale, et configuration GitHub.
Ces points doivent être corrigés AVANT de publier. Publier avec ces failles expose vos utilisateurs et donne une carte d'attaque publique.
-
S1 — Route
/admin/stagiaires/{id}/debug-progressionsupprimée ou absente Vérifié le 5 juillet 2026 : aucune routedebug-progressiondansphp artisan route:list --json -
S2 —
POST /admin/stagiaires/{user}/reset-progressionprotégé côté admin Vérifié : routeadmin.stagiaires.resetdansroutes/admin.php, sousauth,role:admin,admin.activity -
S3 — Corriger
Module::isVisibleTo()pour vérifier l'appartenance groupe du stagiaire
Corrigé le 5 juillet 2026 :app/Models/Module.php— stagiaire vérifié viaUser::aAccesAuModule()(groupe actif + module affecté), formateur viaformateur_id/is_trainer_authoredouGroup::scopeAccessibleByTrainer(). Gap restant identifié :StagiaireController::StagiaireModuleDetail()(routestagiaire.module.detail) etFrontend\LectureController(show,showScorm,showScormBlock,showSlides) n'appellent pasisVisibleTo()et n'ont aucune vérification d'appartenance groupe — à traiter en Phase 2. -
S4 — Ajouter throttling sur
/stagiaire/connexion-code
Corrigé le 5 juillet 2026 : rate limiter nomméconnexion-code(10/minute par IP) viaRateLimiter::for()dansAppServiceProvider, appliqué à la route dansroutes/web.php. -
S5 — Corriger
LessonFeedbackController::store()(route inexistante → erreur 500)
Corrigé le 5 juillet 2026 :redirect()->back()remplace la redirection versmodule.lesson(route inexistante). -
S6 — Corriger le cumul temps SCORM legacy Corrigé le 5 juillet 2026 : migration ajoutant
last_session_timeàscorm_scores(même type quecontent_block_scorm_scores). -
S7 — Ajouter la vérification d'appartenance à la leçon dans
POST /scorm/save-progressCorrigé le 5 juillet 2026 :User::aAccesAuModule()appliqué dansSCORMController,ContentBlockScormControlleretEvaluationSCORMController(403 sinon), middlewareauthajouté sur les 3 routes (CSRF reste désactivé pour l'iframe). -
S8 — Corriger la page publique
/inscriptionCorrigé le 5 juillet 2026 : redirection 301 vers/inscription-formateur(seul parcours d'inscription fonctionnel). -
S9 — Remettre
php artisan testau vert Corrigé le 5 juillet 2026 : le test attendaitpath, contrat obsolète antérieur à la migration Media Library. Test mis à jour pour validermedia_id/url(contrat réellement utilisé par le contrôleur et le frontend). Suite complète verte (124 tests).
Vérifier que ces fichiers ne sont pas dans l'historique git (même supprimés d'un commit récent, ils restent accessibles via git log) :
# Vérifier si .env a jamais été commité
git log --all --full-history -- .env
git log --all --full-history -- .env.local
git log --all --full-history -- .env.production
# Vérifier les clés et credentials
git log --all --full-history -- "*.pem" "*.key" "*credentials*"
# Chercher des secrets dans l'historique complet
git grep -i "password\|secret\|api_key\|token" $(git rev-list --all) 2>/dev/null | grep -v "\.example\|test\|dummy\|placeholder" | head -20Si un secret est trouvé dans l'historique :
- Révoquez immédiatement le secret concerné (mot de passe, clé API, etc.)
- Utilisez
git filter-repo(ou BFG Repo Cleaner) pour le supprimer de l'historique - Faites un force-push après nettoyage (attention : coordonner avec les autres contributeurs)
# Chercher des emails réels dans les seeders
grep -r "@" database/seeders/ database/factories/
grep -r "@" tests/
# Vérifier qu'il n'y a pas de dumps de base de données
find . -name "*.sql" -not -path "./.git/*"
find . -name "*.sqlite" -not -path "./.git/*"Tout email ou nom réel doit être remplacé par des données fictives (test@example.com, jean.dupont@exemple.fr).
État local partiel au 5 juillet 2026 : git log --all --full-history -- .env ne retourne rien. Le scan complet des secrets reste à faire avant passage public.
# Ces éléments doivent être ignorés
cat .gitignore | grep -E "\.env$|storage/|public/build/|public/modules/|vendor/|node_modules/"Vérifier que .gitignore contient au minimum :
.env
.env.*
!.env.example
/vendor/
/node_modules/
/public/build/
/storage/*.key
/storage/app/public/
/public/modules/
/public/upload/
# Vérifier qu'aucun package SCORM n'est dans le dépôt
find public/modules -name "*.zip" 2>/dev/null
find storage -name "imsmanifest.xml" 2>/dev/null | head -5Les packages SCORM importés ne doivent pas être dans le dépôt git (ils peuvent contenir des contenus sous droits).
-
Le fichier
LICENSEcontient le texte intégral de l'AGPL v3
→ État local : le texte AGPL v3 complet est présent -
Le fichier
NOTICEmentionne© Association Oneducavec les années correctes -
Le fichier
CLA.mdest présent et référencé dansCONTRIBUTING.md -
Vérification avec votre école/organisme de certification que votre projet de fin d'année peut être publié sous AGPL au nom de l'association (vérifier la convention de formation ou le règlement intérieur)
-
Les statuts de l'association Oneduc couvrent bien le développement de logiciels numériques (sinon : délibération du CA actant la titularité des droits)
-
Les emails de contact dans
SECURITY.mdetCODE_OF_CONDUCT.mdsont opérationnels (contact@oneduc.fr)
- Le dépôt est mis en Public (ou restera privé temporairement le temps des corrections)
- Description du dépôt renseignée : "LMS pour l'inclusion numérique — Laravel 11, SCORM, quiz natifs"
Ne pas mentionner les outils d'animation live : implémentés mais pas encore activés en environnement de production (voir 07 — Outils d'animation) - Topics GitHub ajoutés :
lms,laravel,scorm,inclusion-numerique,formation,php,tailwind - Site web renseigné :
https://oneduc.fr
- Issues activées (pour les rapports de bugs et demandes de fonctionnalités)
- Discussions activées (pour les questions et la communauté)
- Wiki GitHub activé et alimenté avec le contenu de
docs/wiki/ - Security advisories activées (pour les signalements de failles privés)
-
.github/ISSUE_TEMPLATE/bug_report.md— template de rapport de bug -
.github/ISSUE_TEMPLATE/feature_request.md— template de demande de fonctionnalité -
.github/PULL_REQUEST_TEMPLATE.md— template de Pull Request (inclure rappel du CLA)
État local : ces trois fichiers existent dans .github/.
- La branche
mainest protégée (au moins : interdire les push directs, exiger une PR) - Au moins un reviewer requis pour les PRs (vous-même suffit pour commencer)
Le README.md à la racine est la première chose que les visiteurs GitHub voient. À vérifier :
- Badge de licence AGPL v3 présent
[](https://www.gnu.org/licenses/agpl-3.0)
- Description courte et claire du projet
- Lien vers le wiki (
docs/wiki/README.md) - Lien vers
CONTRIBUTING.md - Section "Licence & gouvernance" mentionnant Association Oneduc + AGPL v3
- Contact (
contact@oneduc.fr)
| Priorité | Action | Bloquant ? |
|---|---|---|
| 1 |
|
Oui |
| 1bis | Traiter le gap identifié lors du correctif S3 : StagiaireModuleDetail et Frontend\LectureController ne vérifient pas l'appartenance groupe |
Oui |
| 2 | Vérifier et nettoyer l'historique git (secrets, données personnelles) | Oui |
| 3 | Synchroniser SECURITY.md avec l'état réel de la checklist |
Recommandé |
| 4 | Vérifier convention formation / statuts association | Recommandé |
| 5 | Configurer GitHub (topics, protections de branche, templates) | Non |
| 6 | Mettre à jour le README principal avec badge et sections | Non |