abm usuarios
This commit is contained in:
parent
e1f55e0ede
commit
766f8c24da
106
app/Http/Controllers/UsuarioController.php
Normal file
106
app/Http/Controllers/UsuarioController.php
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
<?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');
|
||||
}
|
||||
}
|
||||
97
resources/views/usuarios/create.blade.php
Normal file
97
resources/views/usuarios/create.blade.php
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
@extends('layouts.admin')
|
||||
|
||||
@section('contenido')
|
||||
|
||||
<div class="row justify-content-center align-items-center">
|
||||
<div class="col-lg-11 col-md-11">
|
||||
<h3>Nuevo Usuario</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-10">
|
||||
@include('compartido.mensajes')
|
||||
@include('compartido.errores')
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<form method="POST" action="{{ route('usuarios.store') }}">
|
||||
@csrf
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="form-group col-md-4">
|
||||
<label for="name">Nombre (*)</label>
|
||||
|
||||
<input type="text"
|
||||
name="name"
|
||||
id="name"
|
||||
value="{{ old('name') }}"
|
||||
class="form-control"
|
||||
required>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-4">
|
||||
<label for="email">Correo electrónico (*)</label>
|
||||
|
||||
<input type="email"
|
||||
name="email"
|
||||
id="email"
|
||||
value="{{ old('email') }}"
|
||||
class="form-control"
|
||||
required>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="form-group col-md-4">
|
||||
<label for="password">Contraseña (*)</label>
|
||||
|
||||
<input type="password"
|
||||
name="password"
|
||||
id="password"
|
||||
class="form-control"
|
||||
required>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-4">
|
||||
<label for="password_confirmation">
|
||||
Confirmar contraseña (*)
|
||||
</label>
|
||||
|
||||
<input type="password"
|
||||
name="password_confirmation"
|
||||
id="password_confirmation"
|
||||
class="form-control"
|
||||
required>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row justify-content-center align-items-center">
|
||||
|
||||
<div class="col-md-2">
|
||||
<button type="submit"
|
||||
class="btn btn-success btn-block btn-lg">
|
||||
Guardar
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<a href="{{ route('usuarios.index') }}"
|
||||
class="btn btn-primary btn-block btn-lg">
|
||||
Salir
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
@endsection
|
||||
104
resources/views/usuarios/edit.blade.php
Normal file
104
resources/views/usuarios/edit.blade.php
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
@extends('layouts.admin')
|
||||
|
||||
@section('contenido')
|
||||
|
||||
<div class="row justify-content-center align-items-center">
|
||||
<div class="col-lg-11 col-md-11">
|
||||
<h3>Editar Usuario</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-10">
|
||||
@include('compartido.mensajes')
|
||||
@include('compartido.errores')
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<form method="POST"
|
||||
action="{{ route('usuarios.update', $usuario->id) }}">
|
||||
|
||||
@csrf
|
||||
@method('PUT')
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="form-group col-md-4">
|
||||
<label for="name">Nombre (*)</label>
|
||||
|
||||
<input type="text"
|
||||
name="name"
|
||||
id="name"
|
||||
value="{{ old('name', $usuario->name) }}"
|
||||
class="form-control"
|
||||
required>
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-4">
|
||||
<label for="email">Correo electrónico (*)</label>
|
||||
|
||||
<input type="email"
|
||||
name="email"
|
||||
id="email"
|
||||
value="{{ old('email', $usuario->email) }}"
|
||||
class="form-control"
|
||||
required>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="form-group col-md-4">
|
||||
<label for="password">
|
||||
Nueva contraseña (opcional)
|
||||
</label>
|
||||
|
||||
<input type="password"
|
||||
name="password"
|
||||
id="password"
|
||||
class="form-control">
|
||||
</div>
|
||||
|
||||
<div class="form-group col-md-4">
|
||||
<label for="password_confirmation">
|
||||
Confirmar nueva contraseña
|
||||
</label>
|
||||
|
||||
<input type="password"
|
||||
name="password_confirmation"
|
||||
id="password_confirmation"
|
||||
class="form-control">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<p class="text-muted">
|
||||
Deje los campos de contraseña vacíos si no desea modificarla.
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row justify-content-center align-items-center">
|
||||
|
||||
<div class="col-md-2">
|
||||
<button type="submit"
|
||||
class="btn btn-success btn-block btn-lg">
|
||||
Actualizar
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<a href="{{ route('usuarios.index') }}"
|
||||
class="btn btn-primary btn-block btn-lg">
|
||||
Salir
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
@endsection
|
||||
100
resources/views/usuarios/index.blade.php
Normal file
100
resources/views/usuarios/index.blade.php
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
@extends('layouts.admin')
|
||||
|
||||
@section('contenido')
|
||||
|
||||
<div class="row justify-content-center align-items-center">
|
||||
<div class="col-12 col-md-11">
|
||||
<h3>Listado de Usuarios</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row justify-content-center align-items-center">
|
||||
<div class="col-md-2">
|
||||
<a href="{{ route('usuarios.create') }}"
|
||||
class="btn btn-success btn-block btn-lg">
|
||||
Nuevo
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
|
||||
<div class="row justify-content-center align-items-center">
|
||||
<div class="col-12 col-md-11">
|
||||
|
||||
@include('compartido.mensajes')
|
||||
@include('compartido.errores')
|
||||
|
||||
<div class="table-responsive">
|
||||
|
||||
<table class="table table-striped table-bordered table-hover"
|
||||
id="example">
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Id</th>
|
||||
<th>Nombre</th>
|
||||
<th>Email</th>
|
||||
<th>Acciones</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
@foreach($usuarios as $usuario)
|
||||
<tr>
|
||||
<td>{{ $usuario->id }}</td>
|
||||
<td>{{ $usuario->name }}</td>
|
||||
<td>{{ $usuario->email }}</td>
|
||||
|
||||
<td align="center">
|
||||
|
||||
<a class="btn btn-info"
|
||||
href="{{ route('usuarios.show', $usuario->id) }}"
|
||||
title="Ver">
|
||||
<i class="fa fa-eye"></i>
|
||||
</a>
|
||||
|
||||
<a class="btn btn-warning"
|
||||
href="{{ route('usuarios.edit', $usuario->id) }}"
|
||||
title="Editar">
|
||||
<i class="fa fa-pencil"></i>
|
||||
</a>
|
||||
|
||||
<form method="POST"
|
||||
action="{{ route('usuarios.destroy', $usuario->id) }}"
|
||||
style="display:inline;">
|
||||
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
|
||||
<button type="submit"
|
||||
class="btn btn-danger"
|
||||
onclick="return confirm('¿Está seguro de eliminar el usuario?');"
|
||||
title="Eliminar">
|
||||
<i class="fa fa-remove"></i>
|
||||
</button>
|
||||
|
||||
</form>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
$('#example').DataTable({
|
||||
dom: 'Bfrtip',
|
||||
buttons: ['excel'],
|
||||
pageLength: 5
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
56
resources/views/usuarios/show.blade.php
Normal file
56
resources/views/usuarios/show.blade.php
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
@extends('layouts.admin')
|
||||
|
||||
@section('contenido')
|
||||
|
||||
<div class="row justify-content-center align-items-center">
|
||||
<div class="col-md-10">
|
||||
|
||||
<h3>Detalle del Usuario</h3>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-4">
|
||||
<strong>ID:</strong>
|
||||
{{ $usuario->id }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<strong>Nombre:</strong>
|
||||
{{ $usuario->name }}
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<strong>Correo electrónico:</strong>
|
||||
{{ $usuario->email }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row justify-content-center">
|
||||
|
||||
<div class="col-md-2">
|
||||
<a href="{{ route('usuarios.edit', $usuario->id) }}"
|
||||
class="btn btn-warning btn-block">
|
||||
Editar
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<a href="{{ route('usuarios.index') }}"
|
||||
class="btn btn-primary btn-block">
|
||||
Salir
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
@ -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');
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user