diff --git a/setup_complet_snt.sh b/setup_complet_snt.sh new file mode 100644 index 0000000..43fa245 --- /dev/null +++ b/setup_complet_snt.sh @@ -0,0 +1,128 @@ +#!/bin/bash +# setup_complet_snt.sh - Architecture élèves + prof séparés + +NEXTCLOUD_DATA="/var/www/html/nextcloud/data" +NEXTCLOUD_ROOT="/var/www/html/nextcloud" +PROF_USERNAME="profsnt" + +# Vérification qu'on est root +if [[ $EUID -ne 0 ]]; then + echo "Ce script doit être exécuté en tant que root" + exit 1 +fi + +# Vérification que le compte prof existe +if [[ ! -d "$NEXTCLOUD_DATA/$PROF_USERNAME" ]]; then + echo "❌ Erreur: Compte enseignant '$PROF_USERNAME' introuvable" + exit 1 +fi + +echo "🚀 Création des comptes et structure SNT v2" + +# Créer le groupe "eleves" s'il n'existe pas +if ! sudo -u www-data php "$NEXTCLOUD_ROOT/occ" group:list | grep -q "eleves"; then + sudo -u www-data php "$NEXTCLOUD_ROOT/occ" group:add eleves + echo "👥 Groupe 'eleves' créé" +else + echo "👥 Groupe 'eleves' existe déjà" +fi + +# Créer le fichier comptes_crees.csv seulement s'il n'existe pas +if [[ ! -f "comptes_crees.csv" ]]; then + echo "Username,Password,Email,Classe" > comptes_crees.csv + echo "📝 Nouveau fichier comptes_crees.csv créé" +else + echo "📝 Fichier comptes_crees.csv existant - ajout des nouveaux comptes" + echo "📊 Comptes actuels: $(grep -c "^[^Username]" comptes_crees.csv 2>/dev/null || echo "0")" +fi + +# Créer la structure prof une seule fois +echo "📁 Création structure enseignant..." +mkdir -p "$NEXTCLOUD_DATA/$PROF_USERNAME/files/Classes_SNT" + +declare -A classes_vues + +# Lecture du CSV élèves avec mot de passe +while IFS=',' read -r classe nom prenom email motdepasse; do + [[ "$classe" = "Classe" ]] && continue + + username="${prenom,,}.${nom,,}" + # Utiliser le mot de passe du CSV (nettoyer les espaces) + password=$(echo "$motdepasse" | tr -d ' \r\n') + + echo "👤 Création: $username ($classe)" + + # Vérifier si le compte existe déjà + if grep -q "^$username," comptes_crees.csv 2>/dev/null; then + echo "⚠️ Compte $username existe déjà - ignoré" + continue + fi + + # 1. Création compte Nextcloud SANS fichiers par défaut + echo -e "$password\n$password" | sudo -u www-data php "$NEXTCLOUD_ROOT/occ" user:add \ + --display-name="$prenom $nom" \ + --email="$email" \ + "$username" + + if [ $? -eq 0 ]; then + echo "✅ Compte $username créé" + + # Supprimer les fichiers par défaut de Nextcloud (économise l'espace) + rm -rf "$NEXTCLOUD_DATA/$username/files"/* + echo "🗑️ Fichiers par défaut supprimés" + + # Ajouter au groupe eleves + sudo -u www-data php "$NEXTCLOUD_ROOT/occ" group:adduser eleves "$username" + echo "👥 Ajouté au groupe eleves" + + # Quota 125Mo (ajusté pour 25Go serveur / 180 élèves) + sudo -u www-data php "$NEXTCLOUD_ROOT/occ" user:setting "$username" files quota "125 MB" + echo "📊 Quota 125Mo défini" + + # 2. Structure élève (dans SON espace) + eleve_dir="$NEXTCLOUD_DATA/$username/files/SNT" + mkdir -p "$eleve_dir" + mkdir -p "$eleve_dir/Sequence1_Introduction_SNT" + mkdir -p "$eleve_dir/Sequence1_Introduction_SNT/Activite1_Ordinateur_Binaire" + mkdir -p "$eleve_dir/Sequence1_Introduction_SNT/Activite2_Presentation_Python" + + # CORRECTION : Permissions immédiatement après création + chown -R www-data:www-data "$NEXTCLOUD_DATA/$username" + chmod -R 755 "$NEXTCLOUD_DATA/$username" + + # 3. Structure prof pour cette classe (une seule fois) + if [[ -z "${classes_vues[$classe]}" ]]; then + echo "🏫 Création structure classe $classe" + prof_classe_dir="$NEXTCLOUD_DATA/$PROF_USERNAME/files/Classes_SNT/$classe" + mkdir -p "$prof_classe_dir"/{Modeles,Rendus} + mkdir -p "$prof_classe_dir/Modeles/Sequence1_Introduction_SNT"/{Activite1_Ordinateur_Binaire,Activite2_Presentation_Python} + mkdir -p "$prof_classe_dir/Rendus/Sequence1_Introduction_SNT"/{Activite1_Ordinateur_Binaire,Activite2_Presentation_Python} + + classes_vues[$classe]=1 + fi + + # Sauvegarde compte (ajout en fin de fichier) + echo "$username,$password,$email,$classe" >> comptes_crees.csv + echo "💾 Compte sauvegardé dans comptes_crees.csv" + + else + echo "❌ Erreur création $username" + fi + +done < "${1:-eleves_test.csv}" + +# Permissions finales +chown -R www-data:www-data "$NEXTCLOUD_DATA/$PROF_USERNAME/files/Classes_SNT" + +# Rescan Nextcloud +echo "🔄 Rescan des fichiers..." +sudo -u www-data php "$NEXTCLOUD_ROOT/occ" files:scan "$PROF_USERNAME" + +echo "" +echo "🎉 Setup terminé !" +echo "📋 Structure créée :" +echo " - Élèves : dossier SNT/ dans leur espace personnel" +echo " - Prof : dossier Classes_SNT/ avec Rendus/ par classe" +echo " - Prof : dossier Modeles_SNT/ avec modèles communs" +echo " - Comptes sauvés dans : comptes_crees.csv" +echo " - Groupe 'eleves' créé avec tous les élèves" \ No newline at end of file