Script erstellt

This commit is contained in:
Housemann
2025-08-10 18:09:07 +02:00
commit 2a15995cbb
196 changed files with 24790 additions and 0 deletions

View File

@@ -0,0 +1,284 @@
<?php
// Fix: AdminController mit automatischer E-Mail-Versendung erweitern
echo "📧 Fix: AdminController mit E-Mail-Versendung erweitern\n";
echo "=====================================================\n\n";
// 1. AdminController erweitern
echo "1. 🔧 AdminController erweitern...\n";
$controllerContent = '<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Models\NailPolish;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Mail;
class AdminController extends Controller
{
/**
* Dashboard für Administratoren
*/
public function dashboard()
{
$totalUsers = User::count();
$totalNailPolishes = NailPolish::count();
$recentUsers = User::latest()->take(5)->get();
$recentNailPolishes = NailPolish::latest()->take(5)->get();
return view("admin.dashboard", compact("totalUsers", "totalNailPolishes", "recentUsers", "recentNailPolishes"));
}
/**
* Liste aller Benutzer
*/
public function users(Request $request)
{
$search = $request->get("search");
$users = User::when($search, function($query) use ($search) {
return $query->where("name", "like", "%{$search}%")
->orWhere("email", "like", "%{$search}%");
})->orderBy("name")->paginate(20);
return view("admin.users.index", compact("users", "search"));
}
/**
* Formular zum Erstellen eines neuen Benutzers
*/
public function createUser()
{
return view("admin.users.create");
}
/**
* Neuen Benutzer speichern
*/
public function storeUser(Request $request)
{
$request->validate([
"name" => "required|string|max:255",
"email" => "required|string|email|max:255|unique:users",
"password" => "required|string|min:8|confirmed",
]);
// Passwort für E-Mail speichern (wird nach dem Speichern gelöscht)
$plainPassword = $request->password;
// User erstellen
$user = User::create([
"name" => $request->name,
"email" => $request->email,
"password" => Hash::make($request->password),
"is_admin" => $request->has("is_admin"),
]);
// Willkommens-E-Mail senden
try {
Mail::send("emails.welcome-user", [
"user" => $user,
"password" => $plainPassword
], function($message) use ($user) {
$message->to($user->email, $user->name)
->subject("🎨 Willkommen bei der NeoNail DB - Ihre Login-Daten")
->from(config("mail.from.address"), config("mail.from.name"));
});
// Admin-Bestätigung senden
Mail::raw("Hallo Admin!
Ein neuer User wurde erfolgreich erstellt und eine Willkommens-E-Mail gesendet.
📋 User-Details:
- Name: {$user->name}
- E-Mail: {$user->email}
- Admin-Status: " . ($user->isAdmin() ? "Ja" : "Nein") . "
- Erstellt: " . now() . "
Die Willkommens-E-Mail enthält:
- Login-Daten (Website, E-Mail, Passwort)
- Aufforderung zum Passwort-Ändern
- Feature-Übersicht
- Direkte Links zur Anwendung
Viele Grüße,
NeoNail DB System", function($message) {
$message->to("oliver@vogt.de.com", "Admin")
->subject("✅ NeoNail DB - Neuer User erstellt")
->from(config("mail.from.address"), config("mail.from.name"));
});
$successMessage = "Benutzer erfolgreich erstellt! Willkommens-E-Mail wurde gesendet.";
} catch (\Exception $e) {
// User wurde erstellt, aber E-Mail fehlgeschlagen
\Log::error("Fehler beim Senden der Willkommens-E-Mail: " . $e->getMessage());
$successMessage = "Benutzer erfolgreich erstellt! E-Mail konnte nicht gesendet werden.";
}
return redirect()->route("admin.users.index")
->with("success", $successMessage);
}
/**
* Formular zum Bearbeiten eines Benutzers
*/
public function editUser(User $user)
{
return view("admin.users.edit", compact("user"));
}
/**
* Benutzer aktualisieren
*/
public function updateUser(Request $request, User $user)
{
$request->validate([
"name" => "required|string|max:255",
"email" => "required|string|email|max:255|unique:users,email," . $user->id,
"password" => "nullable|string|min:8|confirmed",
]);
$user->name = $request->name;
$user->email = $request->email;
$user->is_admin = $request->has("is_admin");
if ($request->filled("password")) {
$user->password = Hash::make($request->password);
}
$user->save();
return redirect()->route("admin.users.index")
->with("success", "Benutzer erfolgreich aktualisiert!");
}
/**
* Benutzer löschen
*/
public function destroyUser(User $user)
{
$userName = $user->name;
$userEmail = $user->email;
$user->delete();
// Admin-Benachrichtigung über gelöschten User
try {
Mail::raw("Hallo Admin!
Ein User wurde erfolgreich gelöscht.
📋 Gelöschter User:
- Name: {$userName}
- E-Mail: {$userEmail}
- Gelöscht: " . now() . "
Viele Grüße,
NeoNail DB System", function($message) {
$message->to("oliver@vogt.de.com", "Admin")
->subject("🗑️ NeoNail DB - User gelöscht")
->from(config("mail.from.address"), config("mail.from.name"));
});
} catch (\Exception $e) {
\Log::error("Fehler beim Senden der Lösch-Benachrichtigung: " . $e->getMessage());
}
return redirect()->route("admin.users.index")
->with("success", "Benutzer erfolgreich gelöscht!");
}
/**
* Statistiken anzeigen
*/
public function statistics()
{
$totalUsers = User::count();
$totalNailPolishes = NailPolish::count();
$usersWithCollections = User::has("nailPolishes")->count();
$averageCollectionSize = User::withCount("nailPolishes")->avg("nail_polishes_count");
$topUsers = User::withCount("nailPolishes")
->orderBy("nail_polishes_count", "desc")
->take(10)
->get();
return view("admin.statistics", compact(
"totalUsers",
"totalNailPolishes",
"usersWithCollections",
"averageCollectionSize",
"topUsers"
));
}
}';
file_put_contents('app/Http/Controllers/AdminController.php', $controllerContent);
echo " ✅ AdminController erweitert\n";
// 2. E-Mail-Verzeichnis erstellen
echo "2. 📁 E-Mail-Verzeichnis erstellen...\n";
$emailDir = 'resources/views/emails';
if (!is_dir($emailDir)) {
mkdir($emailDir, 0755, true);
echo " ✅ E-Mail-Verzeichnis erstellt: $emailDir\n";
} else {
echo " E-Mail-Verzeichnis existiert bereits: $emailDir\n";
}
// 3. Cache leeren
echo "3. 🧹 Cache leeren...\n";
system('php artisan cache:clear 2>/dev/null || echo " ⚠️ cache:clear übersprungen"');
system('php artisan config:clear 2>/dev/null || echo " ⚠️ config:clear übersprungen"');
system('php artisan view:clear 2>/dev/null || echo " ⚠️ view:clear übersprungen"');
system('php artisan route:clear 2>/dev/null || echo " ⚠️ route:clear übersprungen"');
echo " ✅ Cache geleert\n";
// 4. Test-E-Mail senden
echo "4. 📧 Test-E-Mail senden...\n";
try {
require_once 'vendor/autoload.php';
// Laravel Bootstrap
$app = require_once 'bootstrap/app.php';
$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();
// Test-User erstellen
$testUser = new \App\Models\User();
$testUser->name = 'Test User';
$testUser->email = 'test@example.com';
$testUser->password = 'testpassword123';
$testUser->is_admin = false;
// Test-E-Mail senden
$result = \Illuminate\Support\Facades\Mail::send('emails.welcome-user', [
'user' => $testUser,
'password' => 'testpassword123'
], function($message) use ($testUser) {
$message->to('oliver@vogt.de.com', 'Admin')
->subject('🧪 Test: NeoNail DB Willkommens-E-Mail Template')
->from(config('mail.from.address'), config('mail.from.name'));
});
echo " ✅ Test-E-Mail erfolgreich gesendet!\n";
} catch (Exception $e) {
echo " ❌ Test-E-Mail Fehler: " . $e->getMessage() . "\n";
}
echo "\n✅ AdminController mit E-Mail-Versendung erweitert!\n";
echo "🔗 Testen Sie jetzt:\n";
echo "1. Gehen Sie zu: https://neonail.vogt.de.com/admin/users/create\n";
echo "2. Erstellen Sie einen neuen User\n";
echo "3. Der User erhält automatisch eine Willkommens-E-Mail\n";
echo "4. Sie erhalten eine Admin-Bestätigung\n";
echo "\n📧 Die Willkommens-E-Mail enthält:\n";
echo "- Login-Daten (Website, E-Mail, Passwort)\n";
echo "- Aufforderung zum Passwort-Ändern\n";
echo "- Feature-Übersicht\n";
echo "- Direkte Links zur Anwendung\n";
echo "- Admin-spezifische Informationen (falls Admin)\n";
?>