Los usuarios son un componente muy importante en la mayoría de aplicaciones web. Con el objetivo de ayudar a estandarizar la creación de usuarios, volt ha creado el concepto de usuarios dentro del framework.
La implementación de usuarios en volt todavía es un trabajo en progreso. A futuro queremos añadir soporte para omniauth con el objetivo de que el usuario pueda autenticarse a través de otros servicios. Por ahora solo podemos autenticarnos ingresando el email/usuario y un password.
Volt viene con la gema volt-user-tempates. Primero aprenderemos como usar los usuarios, luego hablaremos acerca de como crear tu propia página de signup y login.
volt-user-templates
nos proveé los templates de signup y login que serán renderizados en la ruta del template main. Volt proveé rutas de /signup
y /login
en routes.rb
, o puedes cargar los templates usando un tag. Mira el readme de volt-user-templates para mas información.
Puedes acceder al modelo del usuario actual por medio de Volt.current_user
.
Volt provee helpers que nos ayudan a asegurarnos de que ciertos datos puedan ser modificados solo por usuarios específicos. Mira permisos para obtener mas información.
Puedes autenticar un usuario con el siguiente comando:
ruby Volt.login(login, password)
En el ejemplo anterior, login
puede ser el nombre de usuario o el email que se encuentra en la configuración. Volt.login
retorna una promesa la cual se resuelve cuando el login ha sido exitoso, o falla con un mensaje de error cuando el login ha tenido un error.
Volt.login(email, password).then do
# redirect on successful login
go '/dashboard'
end.fail do |error|
# login failed with an error
flash._errors << error
end
Puedes cerrar la sesión de un usuario de la siguiente manera:
Volt.logout
La llamada a este método retorna inmediatamente y activa un evento
en Volt.current_user
.
Para un ejemplo de como crear usuarios, mira volt-user-templates.
Volt proveé Volt::User
el cual puede ser heredado por cualquier clase. Por defecto, Volt provee un modelo User en app/main/models/user.rb
.
Volt::User
usa el email
por defecto como propiedad de login, pero también puedes cambiar la configuración para que pueda usar el nombre del usuario: username
. Para hacer esto entra al archivo config/app.rb
y añade:
config.public.auth.use_username = true
Volt::User
nos proveé validaciones en email
o username
. La contraseña se guardará dentro de la propiedad password
. Los passwords se guardarán (por medio de hashing) usando bcrypt en la variable hashed_password
. No tendrás que usar la variable hashed_password
directamente.
Para crear un usuario, usa la colección store:
def index
self.model = store._users.buffer
end
Puedes usar volt-fields para mostrar cualquier en la creación de usuarios.
Volt::ModelController tiene un método require_login
el cual verificará que el usuario se encuentre logeado, y redireccionará a la página de login. Tambien mostrará un mensaje de autenticación exitosa.
Puedes requerir que el usuario se encuentre autenticado para algunas acciones usando la opción :require_login dentro de before_action
module Main
class MainController < Volt::ModelController
before_action :require_login
def index
end
end
end
También puedes cambiar el mensaje por default en require_login, o puedes dejar el valor de nil si no quieres sacar ningún mensaje flash
module Main
class MainController < Volt::ModelController
before_action do
require_login('Login or else')
end
def index
end
end
end