#!/bin/bash

# Script de test des permissions Laravel
# Usage: ./test-laravel-permissions.sh

echo "🧪 Test des permissions Laravel..."

WEBUSER="www-data"
LARAVEL_DIR="/var/www/html"
TEST_DIR="storage/framework/cache/test_permissions"

cd "$LARAVEL_DIR"

# Test 1: Création de fichier par www-data
echo "📝 Test 1: Création de fichier par www-data..."
sudo -u $WEBUSER mkdir -p "$TEST_DIR" 2>/dev/null || echo "Dossier déjà existant"
sudo -u $WEBUSER touch "$TEST_DIR/test_www_data.txt"
if [ -f "$TEST_DIR/test_www_data.txt" ]; then
    echo "✅ Test 1 réussi: www-data peut créer des fichiers"
    ls -la "$TEST_DIR/test_www_data.txt"
else
    echo "❌ Test 1 échoué: www-data ne peut pas créer des fichiers"
fi

# Test 2: Écriture par PHP/Laravel
echo "📝 Test 2: Écriture par PHP..."
sudo -u $WEBUSER php -r "
    file_put_contents('$TEST_DIR/test_php.txt', 'Test PHP: ' . date('Y-m-d H:i:s'));
    echo 'Fichier créé par PHP' . PHP_EOL;
"
if [ -f "$TEST_DIR/test_php.txt" ]; then
    echo "✅ Test 2 réussi: PHP peut créer des fichiers"
    ls -la "$TEST_DIR/test_php.txt"
    cat "$TEST_DIR/test_php.txt"
else
    echo "❌ Test 2 échoué: PHP ne peut pas créer des fichiers"
fi

# Test 3: Vérifier les permissions des dossiers critiques
echo "📝 Test 3: Vérification des permissions des dossiers critiques..."
CRITICAL_DIRS=(
    "storage/framework/cache"
    "storage/framework/sessions"
    "storage/framework/views"
    "bootstrap/cache"
    "storage/logs"
)

for dir in "${CRITICAL_DIRS[@]}"; do
    if [ -d "$dir" ]; then
        PERMS=$(stat -c "%a" "$dir")
        OWNER=$(stat -c "%U:%G" "$dir")
        echo "📂 $dir: $PERMS ($OWNER)"
        
        if [ "$PERMS" = "775" ] || [ "$PERMS" = "2775" ] && [ "$OWNER" = "www-data:www-data" ]; then
            echo "   ✅ Permissions correctes (setgid activé)"
        else
            echo "   ⚠️ Permissions à vérifier"
        fi
    else
        echo "📂 $dir: ❌ Dossier manquant"
    fi
done

# Test 4: Test Artisan cache
echo "📝 Test 4: Test des commandes Artisan cache..."
sudo -u $WEBUSER php artisan config:cache > /dev/null 2>&1
if [ $? -eq 0 ]; then
    echo "✅ Test 4 réussi: artisan config:cache fonctionne"
else
    echo "❌ Test 4 échoué: artisan config:cache a échoué"
fi

sudo -u $WEBUSER php artisan route:cache > /dev/null 2>&1
if [ $? -eq 0 ]; then
    echo "✅ Test bonus: artisan route:cache fonctionne"
else
    echo "❌ Test bonus: artisan route:cache a échoué"
fi

# Nettoyage
rm -rf "$TEST_DIR" 2>/dev/null

echo ""
echo "🎯 Résumé des tests terminé !"
echo "Si tous les tests sont ✅, les permissions sont correctement configurées."