diff --git a/app/Http/Controllers/UsuarioController.php b/app/Http/Controllers/UsuarioController.php
new file mode 100644
index 0000000..46c5367
--- /dev/null
+++ b/app/Http/Controllers/UsuarioController.php
@@ -0,0 +1,106 @@
+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');
+ }
+}
\ No newline at end of file
diff --git a/resources/views/usuarios/create.blade.php b/resources/views/usuarios/create.blade.php
new file mode 100644
index 0000000..f09238d
--- /dev/null
+++ b/resources/views/usuarios/create.blade.php
@@ -0,0 +1,97 @@
+@extends('layouts.admin')
+
+@section('contenido')
+
+
+
+
+
+ @include('compartido.mensajes')
+ @include('compartido.errores')
+
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/usuarios/edit.blade.php b/resources/views/usuarios/edit.blade.php
new file mode 100644
index 0000000..f3e2197
--- /dev/null
+++ b/resources/views/usuarios/edit.blade.php
@@ -0,0 +1,104 @@
+@extends('layouts.admin')
+
+@section('contenido')
+
+
+
+
+
+ @include('compartido.mensajes')
+ @include('compartido.errores')
+
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/resources/views/usuarios/index.blade.php b/resources/views/usuarios/index.blade.php
new file mode 100644
index 0000000..2aa2492
--- /dev/null
+++ b/resources/views/usuarios/index.blade.php
@@ -0,0 +1,100 @@
+@extends('layouts.admin')
+
+@section('contenido')
+
+
+
+
Listado de Usuarios
+
+
+
+
+
+
+
+
+
+
+ @include('compartido.mensajes')
+ @include('compartido.errores')
+
+
+
+
+
+
+
+ | Id |
+ Nombre |
+ Email |
+ Acciones |
+
+
+
+
+ @foreach($usuarios as $usuario)
+
+ | {{ $usuario->id }} |
+ {{ $usuario->name }} |
+ {{ $usuario->email }} |
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+ @endforeach
+
+
+
+
+
+
+
+
+@endsection
+
+@push('scripts')
+
+@endpush
\ No newline at end of file
diff --git a/resources/views/usuarios/show.blade.php b/resources/views/usuarios/show.blade.php
new file mode 100644
index 0000000..21ec872
--- /dev/null
+++ b/resources/views/usuarios/show.blade.php
@@ -0,0 +1,56 @@
+@extends('layouts.admin')
+
+@section('contenido')
+
+
+
+
+
Detalle del Usuario
+
+
+
+
+
+
+
+ ID:
+ {{ $usuario->id }}
+
+
+
+ Nombre:
+ {{ $usuario->name }}
+
+
+
+ Correo electrónico:
+ {{ $usuario->email }}
+
+
+
+
+
+
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/routes/web.php b/routes/web.php
index ff44ede..531687a 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -3,6 +3,8 @@
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\CategoriasController;
use App\Http\Controllers\ProductoController;
+use App\Http\Controllers\UsuarioController;
+
/*
|--------------------------------------------------------------------------
| Web Routes
@@ -32,4 +34,6 @@ Route::resource('categorias', CategoriasController::class)->middleware('auth');
Route::resource('productos', ProductoController::class);
Route::put('categorias/restaurar/{categoria}', [CategoriasController::class, 'restaurar'])->name('categorias.restaurar')->middleware('auth');
Auth::routes();
+Route::resource('usuarios', UsuarioController::class)
+ ->middleware('auth');
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');