67 lines
1.4 KiB
PHP
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');
|
|
}
|
|
}
|