#!/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"