Add admin user management (create, edit, password change, delete)
Deploy to Production (witstore.wende.it) / deploy (push) Successful in 6s

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-20 18:59:59 +02:00
co-authored by Claude Sonnet 4.6
parent b74bf06ed7
commit 685bd0fa9f
6 changed files with 251 additions and 0 deletions
@@ -0,0 +1,82 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class AdminUserController extends Controller
{
public function index()
{
$admins = User::whereIn('role', ['admin', 'super_admin'])->orderBy('name')->get();
return view('admin.admins.index', compact('admins'));
}
public function create()
{
return view('admin.admins.form', ['admin' => null]);
}
public function store(Request $request)
{
$data = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
'role' => 'required|in:admin,super_admin',
'password' => 'required|min:8|confirmed',
]);
User::create([
'name' => $data['name'],
'email' => $data['email'],
'role' => $data['role'],
'password' => Hash::make($data['password']),
'approved' => true,
'email_verified_at' => now(),
]);
return redirect()->route('admin.admins.index')->with('success', 'Admin-Benutzer angelegt.');
}
public function edit(User $admin)
{
abort_if(! $admin->isAdmin(), 404);
return view('admin.admins.form', compact('admin'));
}
public function update(Request $request, User $admin)
{
abort_if(! $admin->isAdmin(), 404);
$data = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email,' . $admin->id,
'role' => 'required|in:admin,super_admin',
'password' => 'nullable|min:8|confirmed',
]);
$admin->name = $data['name'];
$admin->email = $data['email'];
$admin->role = $data['role'];
if (!empty($data['password'])) {
$admin->password = Hash::make($data['password']);
}
$admin->save();
return redirect()->route('admin.admins.index')->with('success', 'Admin-Benutzer aktualisiert.');
}
public function destroy(User $admin)
{
abort_if(! $admin->isAdmin(), 404);
abort_if($admin->id === auth()->id(), 403, 'Sie können sich nicht selbst löschen.');
$admin->delete();
return back()->with('success', 'Admin-Benutzer gelöscht.');
}
}