neonail-database/fix-admin-controller-email.php
2025-08-10 18:09:07 +02:00

285 lines
9.2 KiB
PHP
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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