taller/app/Http/Controllers/UsuarioController.php
2026-10-12 11:02:51 -03:00

106 lines
2.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
class UsuarioController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
$usuarios = User::all();
return view('usuarios.index', compact('usuarios'));
}
public function create()
{
return view('usuarios.create');
}
public function store(Request $request)
{
$datos = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|max:255|unique:users,email',
'password' => 'required|string|min:8|confirmed',
]);
$usuario = new User();
$usuario->fill([
'name' => $datos['name'],
'email' => $datos['email'],
'password' => $datos['password'],
]);
$usuario->save();
return redirect()->route('usuarios.index')
->with('mensaje-success', 'Usuario registrado correctamente');
}
public function show($id)
{
$usuario = User::findOrFail($id);
return view('usuarios.show', compact('usuario'));
}
public function edit($id)
{
$usuario = User::findOrFail($id);
return view('usuarios.edit', compact('usuario'));
}
public function update(Request $request, $id)
{
$usuario = User::findOrFail($id);
$datos = $request->validate([
'name' => 'required|string|max:255',
'email' => [
'required',
'email',
'max:255',
Rule::unique('users', 'email')->ignore($usuario->id),
],
'password' => 'nullable|string|min:8|confirmed',
]);
$usuario->name = $datos['name'];
$usuario->email = $datos['email'];
if (!empty($datos['password'])) {
$usuario->password = $datos['password'];
}
$usuario->update();
return redirect()->route('usuarios.index')
->with('mensaje-success', 'Usuario actualizado correctamente');
}
public function destroy($id)
{
$usuario = User::findOrFail($id);
if ($usuario->id == auth()->id()) {
return redirect()->route('usuarios.index')
->with('mensaje-error', 'No puede eliminar su propio usuario');
}
$usuario->delete();
return redirect()->route('usuarios.index')
->with('mensaje-success', 'Usuario eliminado correctamente');
}
}