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

Explorando Devise, Parte 1

Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Exploring Devise.
Exploring Devise, Part 2

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

En algunos de mis tutoriales anteriores sobre carga de imágenes en Rails, hice mención de Devise pero no me adentré mucho a este. En este tutorial, te estaré enseñando sobre Devise.

¿Listo? ¡Comencemos!

Introducción y Módulos de Devise

Devise es una solución de autenticación para Rails construida con Warden y proporcionada por la increíble gente en Plataformatec. Devise proporciona diferentes módulos:

  • Database Authenticatable: esto encripta y almacena una contraseña a la base de datos para validar la autenticidad de un usuario mientras inicia sesión.
  • Omniauthable: Esto adjunta soporte OmniAuth a Devise. Los usuarios de tu aplicación podrán iniciar sesión usando cuentas como Facebook, Twitter, y Google.
  • Confirmable: Esto habilita el envío de emails con instrucciones que ayudarán a la verificación de una cuenta.
  • Recoverable: Este módulo ayuda en tiempos cuando los usuarios olvidan su contraseña y necesitan recuperarla. Con esto, el usuario será capaz de reiniciar su contraseña.
  • Registerable: Esto maneja el registro de usuarios. También permite a los usuarios editar y borrar sus cuentas.
  • Rememberable: Este modulo hace posible para tu aplicación recordar a un usuario con sesión iniciada almacenando una cookie.
  • Trackable: Este módulo ayuda a llevar la cuenta de inicio de sesión, estampas de tiempo y direcciones IP.
  • Timeoutable: Este módulo es responsable de expirar una sesión que no ha estado activa por un periodo de tiempo.
  • Validatable: Con este módulo, se validan el email y la contraseña.
  • Lockable: Esto proporciona una capa extra de seguridad---cuando se activa, una cuenta puede ser bloqueada después de un número dado de intentos de sesión fallidos.

Integración Devise

Para el propósito de este tutorial, vamos a generar una aplicación Rails que usaremos para revisar el funcionamiento de Devise. ¡Procedamos!

rails new devise-app -T

La bandera -T le dice a Rails que genere la aplicación sin la suite de prueba por defecto. Navega a tu directorio de aplicación y agrega los siguientes gems a tu Gemfile.

Ahora instala los gems Devise y Bootstrap que acabas de agregar.

bundle install

Renombra tu archivo app/assets/stylesheets/application.cssapp/assets/stylesheets/application.scss y agrega las siguientes líneas en el:

Abre el archivo app/assets/javascripts/application.js y requiere bootstrap-sprockets. El mío luce así:

Después, necesitas ejecuta el comando Rails para instalar los archivos de configuración para Devise. Lo haces ejecutando este comando:

rails generate devise:install

El comando genera lo siguiente en tu terminal. Deberías leerlo para entender lo que sucedió.

El comando también genera dos archivos, que puedes encontrar en el directorio config. También nos da algunas instrucciones sobre lo que deberíamos hacer.

Navega a tu diseño de aplicación, app/views/layouts/application.html.erb, y hazlo lucir como lo que tengo abajo:

Necesitas definir las opciones de URL por defecto para tu entorno de desarrollo. Agrega el código de abajo en config/environments/development.rb.

Ahora necesitas crear un modelo User para Devise. Puedes hacerlo usando tu terminal.

rails generate devise User

Esto generará un archivo user.rb en tu directorio app/models. El archivo generado lucirá así:

Puedes ver que contiene los módulos por defecto que mencioné arriba. El comando que ejecutaste también modificó tu archivo config/routes.rb agregando una ruta para devise. Deberías revisar eso.

En este punto, necesitas migrar tu base de datos. Lo haces ejecutando:

rake db:migrate

Autenticación Usando Devise

Ahora necesitas crear un PagesController y envolver la Autenticación Devise alrededor de este---Esto prevendrá a personas no autorizadas de ver la página.

rails generate controller Pages index

Abre tu archivo de rutas y establece la raíz de tu aplicación.

Abre tu PagesController y agrega autenticación para tus páginas index y new.

El código muestra que las páginas index y new son accesibles solo para usuarios registrados. Abre tu terminal y comienza tu rails sever. Apunta tu navegador a http://localhost:3000 y serás redireccionado automáticamente a la página de inicio de sesión de Devise.

Iniciando Sesión Sin Usar Email

Los medios por defecto para iniciar sesión en Devise involucra el uso de dirección de email y contraseña. ¿Qué si quieres habilitar a los usuarios para que inicien sesión con su nombre de usuario único? Si eso es lo que quieres, es posible. Veamos como.

Ejecuta el comando:

rails generate migration AddUsernameToUSers username:string

Esto agregará una nueva columna para username en tu tabla users. Migra tu base de datos.

rake db:migrate

Necesitas agregar un campo a tus vistas en donde tus usuarios puedan ingresar su nombre de usuario. Cuando vas a tu directorio app/views, no encontrarás ningún archivo que genere las vistas Devise. Esto es porque Devise carga las vistas desde su gemset. Para personalizarlo, tienes que generar copias de las vistas. El comando de abajo hace la magia.

rails generate devise:views

Esto generará algunas carpetas y archivos en tu directorio app/views.

Necesitarás editar la página para iniciar sesión, registrar y actualizar la información de usuario. Solo pega los bloques de código de abajo en sus respectivos archivos.

Sign-Up

Edit

Sign-In

Usando tu editor de texto, navega a app/controllers/application_controller.rb. Necesitas modificarlo para permitir el uso de nombre de usuario. Modifícalo para que luzca así:

Ahora un usuario puede iniciar sesión con su nombre de usuario. En este punto hay algo que no está bien en tu aplicación. Cuando un usuario inicia sesión, no hay manera de cerrar sesión. Esto no resulta en una experiencia de usuario grandiosa. Te mostraré como arreglar eso.

Desde tu terminal, crea un nuevo directorio llamado shared en tu folder app/views.

EL archivo que creaste arriba es un parcial en donde el código para tu barra de navegación será escrito. Pon el siguiente código.

Ahora necesitas generar la barra e navegación en tu diseño de aplicación. Abre app/views/layouts/application.html.erb y pon el código para generar tu barra de navegación.

Conclusión

En esta parte aprendiste cómo instalar Devise y agregar autenticación a tus páginas. También hice mención de un parcial. Cubriré eso en un tutorial por separado.

En la siguiente parte, cubriré algunas áreas más avanzadas que esta. ¡Espero que haya valido tu tiempo!

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.