Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Ruby on Rails

Autorización Con Pundit

Difficulty:BeginnerLength:MediumLanguages:

Spanish (Español) translation by Rafael Chavarría (you can also view the original English article)

Pundit es una herramienta que te permite restringir ciertas partes de tu aplicación Rails a usuarios autorizados. Hace esto proporcionándote ciertos ayudantes.

En este tutorial, construirás un blog que restringe partes tales como crear, actualizar y borrar artículos solo para usuarios autorizados.

Comenzando

Comienza generando una nueva aplicación Rails.

La bandera -T le dice a Rails que genere la nueva aplicación sin la suite de prueba por defecto. Ejecutar el comando generará tu aplicación Rails e instalará los gems por defecto.

Continúa y agrega los siguientes gems a tu Gemfile. Estarás usando bootstrap-sass para el diseño de tu aplicación, y Devise manejará la autenticación de usuario.

Ejecuta el comando para instalar el gem.

Ahora renombra app/assets/stylesheets/application.cssapp/assets/stylesheets/application.scss. Agrega las siguientes líneas de código para importar bootstrap.

Crea un parcial llamado _navigation.html.erb para contener tu código de navegación; el parcial debería estar ubicado en el directorio app/views/layouts. Haz que el parcial luzca como lo que tengo abajo.

Para que la navegación sea usada, necesitas generarla en tu diseño de aplicación. Modifica tu diseño de aplicación para que luzca como lo que tengo abajo.

General el Modelo de Usuario

Ejecuta el comando para instalar Devise.

Ahora genera tu modelo de Usuario.

Migra tu base de datos.

Genera Recursos de Artículo

Ejecuta el comando para generar tus recursos de Artículo.

Esto generará tu ArticlesController y Modelo de Artículo. También generará las vistas necesarias.

Ahora migra tu base de datos ejecutando:

Abre app/views/articles/_form.html.erb y hazlo lucir como lo que tengo abajo.

Para tu archivo index, debería lucir así.

El código de arriba acomoda los artículos en la página index en un formato de tabla para hacerlo lucir presentable.

Abre tu archivo de rutas y agrega la rut apara los recursos de artículos.

Integra Pundit

Agrega el gem Pundit a tu Gemfile.

Ejecuta el comando para instalar.

Integra Pundit a tu aplicación agregando la siguiente línea a tu ApplicationController.

Ejecuta el generador de Pundit.

Esto generará una carpeta app/policies que contiene una clase base con políticas. Cada política es una clase Ruby básica.

Así es como luce la clase básica de política.

Crea la Política de Artículo

Ahora necesitas escribir tu propia política. Para este tutorial, quieres permitir solo usuarios registrados para que creen nuevos artículos. Además de eso, solo los creadores de un artículo deberían poder editar y borrar el artículo.

Para lograr esto, tu política de artículo lucirá así.

En lo de arriba, estás permitiendo a todos (usuarios registrados y no registrados) ver la página index. Para crear un nuevo artículo, un usuario tiene que estar registrado. Usas user.present? para averiguar si el usuario que está intentando realizar la acción está registrado.

Para actualizar y borrar, quieres asegurarte de que solo el usuario que creó el artículo pueda realizar estas acciones.

En este punto, necesitas establecer una relación entre tu modelo de Artículo y Usuario.

Lo haces generando una nueva migración.

Después, migra tu base de datos ejecutando el comando:

Abre el modelo User y agrega la línea que sella la relación.

Tu modelo Article debería tener esto.

Ahora necesitas actualizar tu ArticlesController para que esté en sincronía con lo que has hecho hasta ahora.

En este punto en tu aplicación, has implementado satisfactoriamente políticas que restringen ciertas partes de tu aplicación a usuarios selectos.

Quieres agregar un mensaje de error estándar que muestre cuando un usuario no autorizado intenta acceder a una página restringida. Para hacerlo, agrega lo siguiente a tu ApplicationController.

Este código simplemente genera un texto básico que le dice al usuario que no está autorizado para realizar la acción.

Ejecuta:

Para comenzar tu servidor Rails, apunta a tu navegador a https://localhost:3000 para ver lo que tienes.

Conclusión

En este tutorial, aprendiste cómo trabajar con Devise y Pundit. Pudiste crear políticas que permitieron solo a usuarios autorizados ver ciertas partes de la aplicación. También creaste un texto de error básico que muestra cuando un usuario no autorizado intenta acceder a una parte restringida de la aplicación.

Puedes aprender más sobre Pundit revisando la página de GitHub.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.