285 lines
9.2 KiB
PHP
285 lines
9.2 KiB
PHP
<?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";
|
||
?>
|