jairogarcíarincón

Usuarios en el back-end


10.6K

Introducción



En este apartado crearemos todas las opciones relativas a la gestión de usuarios en el panel de administración.

No obstante, antes de empezar, debemos asegurarnos de que el primer usuario que hemos creado mediante registro tenga la opción de usuarios activada, ya que por defecto, para los usuarios que se creen, dicha opción esta desactivada.

Para ello, accede a tu editor gráfico o consola SQL y modifica el valor de usuarios a 1 para el usuario seleccionado. En mi caso el comando sería:



De este modo, nuestro usuario ya tiene acceso a la pestaña de usuarios y a todas las acciones relativas que desarrollaremos a continuación.

Archivo de rutas



Empezaremos por crear es una serie de rutas en nuestro archivo routes/web.php:




Middleware



Supongo que te habrá llamado la atención que todas las rutas relativas a usuarios llevan la opción de middleware("role:usuarios").

Un middleware es un mecanismo para filtrar peticiones HTTP a nuestra aplicación, o dicho de otro modo, es una forma de asegurarnos de que ningún usuario no autorizado realiza acciones no permitidas.

Para hacerte una idea de cómo funcionan, puedes echar un vistazo a los diferentes middlewares creados por defecto dentro de la carpeta app/Http/Middleware.

Para nuestra aplicación, vamos a crear un nuevo middleware llamado Roles que se encargará de comprobar si el campo, columna o rol correspondiente (usuarios o noticias) está a 1 antes de realizar la acción y, en caso contrario, redireccionará al inicio del panel de administración con un mensaje de error de permisos.

Para empezar, ejecuta el siguiente comando en la raíz de tu proyecto:



Esto habrá creado una nueva clase dentro de app/Http/Middleware llamada Roles (tendrás que refrescar o descargar dicho archivo a tu IDE antes de poder abrirlo).

A continuación, abre el archivo anterior y modifícalo para que incluya lo siguiente:




Para finalizar, registra el middleware en la aplicación añadiéndolo al array $routeMiddleware del archivo app/Http/Kernel.php:




UsuarioController



Una vez ajustados los permisos de la sección de usuarios, es el momento de crear el controlador de usuarios en el que desarrollar las acciones correspondientes.

Crea una nueva clase app/Http/Controllers/UsuarioController con el siguiente código:




UsuarioRequest



Como puedes observar en las acciones guardar() y activar() se hace referencia a la clase UsuarioRequest.

Estas clases de tipo FormRequest sirven para establecer ciertas reglas a los campos de nuestro formulario (filtros, validaciones, etc.). Toda la información referente a los mismos se encuentra en https://laravel.com/docs/8.x/validation#form-request-validation.

En nuestro caso, hemos ejecutado en la raíz de nuestro proyecto el comando:



Que ha creado el archivo app/Http/Requests/UsuarioRequest, el cual debes descargar a tu IDE y modificar con el siguiente contenido:




Vista de listado de usuarios (archivo resources/views/admin/usuarios/index.blade.php)





listado usuarios



Vista de creación/edición de usuario (archivo resources/views/admin/usuarios/editar.blade.php)





editar usuario



Una vez hecho todo esto, ya podrías crear, editar, activar/desactivar y borrar usuarios, siempre que tengas permisos, claro.

En el próximo apartado desarrollaremos las acciones relativas a la gestión de noticias desde el panel de administración y crearemos todas las vistas.


Ejercicios propuestos


  1. Modifica el proyecto para que, mediante un nuevo middleware, un usuario solo pueda crear a otro usuario si tiene el campo crear de la tabla usuarios a 1 (incluyendo sus vistas asociadas)

  2. Modifica el proyecto para que, mediante un nuevo middleware, un usuario no se pueda borrar a sí mismo (incluyendo sus vistas asociadas)

  3. Modifica el punto anterior para que, el método borrar se gestione mediante un nuevo BorrarRequest que impida que un usuario se pueda borrar a sí mismo (incluyendo sus vistas asociadas)



Publicado el 21 de Noviembre de 2024

bloggestor de contenidoslaravelphpcssjquery