Devise
Devise es una gema que facilita la implementación de la autenticación en nuestras aplicaciones.
Generalmente lo que hago cuando voy a utilizar Devise es ir a la documentación y seguir los pasos, pero los copiamos acá por referencia.
Vamos a continuar trabajando en nuestra aplicación de libros. Puedes utilizar la aplicación que has venido construyendo o clonar el proyecto y descargar la rama step-5
:
El primer paso es agregar la gema al final del archivo
Gemfile
:Ejecuta
bundle install
para instalarla.Ejecuta el generador de Devise:
El siguiente paso es crear el modelo de los usuarios de la aplicación, generalmente
User
:Ejecuta
rails db:migrate
para correr las migraciones.
Rutas que crea Devise
Asumiendo que el usuario es User
, Devise crea, entre otras, las siguientes rutas:
Ruta | Nombre | Descripción |
| new_user_registration | Formulario de registro |
| Registrarse | |
| new_user_session | Formulario de login |
| Login | |
| destroy_user_session | Salir |
Para ver el listado completo ejecuta rails routes
. Las demás rutas son, en su mayoría, para el manejo de contraseñas (recuperar, cambiar, etc).
Agregando los links de Devise
Para que el usuario pueda registrarse, ingresar y salir de nuestra aplicación vamos a agregar algunos links en el layout de la aplicación.
Abre app/views/layouts/application.html.erb
y agrega lo siguiente después del <body>
, antes de <%= yield %>
:
Filtros y helpers de controlador
Devise crea algunos métodos de ayuda y filtros para que puedas manejar la autenticación en tu aplicación.
Asumiendo que tu usuario se llama User
, el filtro que puedes agregar sobre los controladores que quieres proteger es el siguiente:
En nuestra aplicación de libros vamos a proteger todas las acciones del controlador books
exceptuando index
y show
que son las que nos van a permitir listar y mostrar los detalles de un libro.
Agrega la siguiente línea dentro de la clase:
Los métodos de ayuda a los que vas a tener acceso en los controladores y vistas son los siguientes:
Método | Descripción |
| Retorna |
| Retorna el usuario que está autenticado o |
| Retorna la sesión del usuario |
En nuestra aplicación sólo vamos a mostrar los links de "Editar" y "Eliminar" si el usuario está autenticada. Cambia el archivo app/views/books/index.html.erb
para que quede los links queden de la siguiente forma:
Ahora sólo deberían aparecer los links de "Editar" y "Eliminar" si el usuario está autenticado.
El modelo de usuario
Asumiendo que al usuario lo llamaste User
al generarlo, el modelo que genera Devise es el siguiente:
Este es un modelo normal pero utiliza el método devise
que recibe una serie de módulos que puedes activar o desactivar.
Los módulos que vienen activados son los siguientes:
Módulo | Descripción |
| Los usuarios se van a poder autenticar con un nombre de usuario y contraseña almacenado en la base de datos. |
| Los usuarios van a poder registrarse, actualizar y eliminar su perfil. |
| Los usuarios van a poder recuperar su contraseña |
| Habilita la opción "Recordarme" en el login |
| Habilita el seguimiento al usuario (de dónde se autenticó, cuantas veces, de qué IP, etc.) |
| Valida el email y el password |
Modificando las vistas
Por defecto no vas a ver vistas ni controladores de Devise. Sin embargo, si quieres modificarlos puedes decirle a Devise que los genere.
Para generar las vistas utiliza el siguiente comando:
Para generar los controladores utiliza el siguiente comando:
Luego incorpora el controlador que quieras sobreescribir en routes de la siguiente manera:
De esta forma puedes modificar las vistas y cambiar funcionalidad de Devise.
Last updated