Files
git-course/app/Http/Controllers/UserController.php
2026-05-11 12:28:38 +08:00

67 lines
1.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Requests\UpdateUserRequest;
use App\Models\Role;
use App\Models\User;
use Illuminate\Http\RedirectResponse;
use Illuminate\View\View;
class UserController extends Controller
{
/**
* Display a listing of users.
*/
public function index(): View
{
$users = User::query()
->orderBy('name')
->paginate(10, ['id', 'name', 'email', 'created_at']);
return view('user.index', [
'users' => $users,
]);
}
/**
* Show the form for editing the specified user.
*/
public function edit(User $user): View
{
$user->load('roles:id');
$roles = Role::query()
->orderBy('name')
->get(['id', 'name']);
return view('user.edit', [
'user' => $user,
'roles' => $roles,
]);
}
/**
* Update the specified user.
*/
public function update(UpdateUserRequest $request, User $user): RedirectResponse
{
$validated = $request->validated();
$roleIds = $validated['roles'] ?? [];
unset($validated['roles']);
$user->fill($validated);
if ($user->isDirty('email')) {
$user->email_verified_at = null;
}
$user->save();
$user->roles()->sync($roleIds);
return redirect()
->route('user.edit', $user)
->with('status', 'user-updated');
}
}