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"; ?>