No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

1D
4H
45M
13S

A帽adiendo el concepto de usuario

23/36
Recursos

Aportes 16

Preguntas 3

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Devise es una gema super completa para el manejo de registros y sesiones de usuarios.

Si t煤 te est谩s imaginando desde ahora que puedes usar devise para iniciar sesi贸n con Github, Twitter y otros, d茅jame decirte que s铆 se puede. Dejar茅 un link a un repo de ejemplo, pero por ahora recomiendo que contin煤es con el curso, guardes el link y cuando te sientas con mayores habilidades en Rails trates de implementarlo en tu aplicaci贸n.
https://github.com/imhta/rails_6_devise_example

隆Hola! Si est谩n teniendo el siguiente problema:
Parece ser que es debido a que el usuario tiene JavaScript desactivado, como indica el siguiente texto recopilado de la p谩gina:

method: symbol of HTTP verb - This modifier will dynamically create an HTML form and immediately submit the form for processing using the HTTP verb specified. Useful for having links perform a POST operation in dangerous actions like deleting a record (which search bots can follow while spidering your site). Supported verbs are :post, :delete, :patch, and :put. Note that if the user has JavaScript disabled, the request will fall back to using GET.

Exactamente no podr铆a indicar a que se refiere esto, sin embargo, una soluci贸n temporal que se puede dar es que en vez de utilizar link_to utilicemos button_to.
Original

<%= link_to 'cerrar sesi贸n', destroy_user_session_path, method: :delete %>

Usando button_to

<%= button_to "cerrar sesi贸n", destroy_user_session_path, method: :delete %>

Con rails routes -c parametro es posible filtar un controlador en especifico, por ejemplo con
rails routes -c user 鈥淪olo mostrara las rutas del controlador user y todos los que tengan el parametro user en su nombre鈥

Si quieren entender mejor c贸mo funciona por debajo el sistema de autenticaci贸n de Devise, estos son algunos recursos que el mismo creador de la gema recomienda en la documentaci贸n si apenas te est谩s iniciando en el lenguaje para que logres comprender su funcionamiento.

Mini curso pr谩ctico de autenticaci贸n paso a paso con Rails

Tutorial de autenticaci贸n desde cero con Rails

Antes que nada quiero decir que este curso me ha parecido excelente, solo para aportar en esta clase me gustaria mencionar que en el momento que no se tiene sesion iniciada, aparece el link para cerrar sesion, cosa que no deberia de ser asi, ya que aun no se tiene una sesion iniciada, investigando un poco sobre la gema devise lo resolvi de la siguiente forma:

- if user_signed_in?
      = link_to t('common.log_out'), destroy_user_session_path, method: :delete

Cabe mencionar que use un locale, cosa que deberan de cambiar o agregar, ademas de que mi archivo ya esta convertido en haml, de igual forma si mas adelante en el curso el profesor resuelve esto de una mejor manera deberemos de cambiarlo, espero sirva de algo 馃槂

Si tienen problema de usar el comando

rails g devise:install

y les da el siguiente error:

rails g devise:install
Running via Spring preloader in process 6623
Could not find generator 'devise:install'. 
Run `rails generate --help` for more options.

Usen el siguiente codigo, al menos a mi me funciono.

DISABLE_SPRING=1 bundle exec rails g devise:install

Saludos:
Si estan teniendo un problema a la hora de crear un nuevo usuario puede ser porque se esta utilziando Rails 7 con esta gema devise.
en este post explican que una soluci贸n puede ser a帽adir la siguiente l铆nea de c贸digo al archivo devise.rb (config/initializers/devise.rb)

config.navigational_formats = ['*/*', :html, :turbo_stream]

Recuerden reiniciar su servidor de rails si lo ten铆an corriendo y despu茅s de esto todo deber铆a de funcionar.

Hola yo hice algunos cambios en esta clase ya que me puse a invesgiar un poco sobre la gema.

Agregue vista home para tener de root en vez de la p谩gina por defecto de rails esto se hace creando una carpeta llamada home en views y crear un archivo en esa carpeta llamado home.html.haml. Con respecto al controlador le cre茅 un m茅todo index

Agregu茅 una logica en el application.html.erb para que dependiendo de si el usuario ha iniciado sesion o no aparezcan links de iniciar sesi贸n o cerrar sesi贸n.

<!DOCTYPE html>
<html>
  <head>
    <title>Organizador</title>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <%if user_signed_in? %>
      <%=link_to 'Sing out', destroy_user_session_path, method: :delete%>
      <%=link_to 'Edit', edit_user_registration_path%>
      <%=link_to 'Tareas', tasks_path%>

    <%else%>
      <%=link_to 'Sing Up', new_user_registration_path%>
      <%=link_to 'Sing In', new_user_session_path%>

    <%end%>
    <%= yield %>
  </body>
</html>

El before_action :authenticate_user! lo utilic茅 en cada controller de los modelos para ue me dejara entrar a la pagina home sin iniciar sesi贸n. (No se si esta es la mejor forma de hacerlo).

De esta manera cuando entro a localhost:3000/ entro a una pgina de bienvenida donde puedo iniciar sesi贸n. Y al iniciar sesi贸n vuelvo all铆 pero ahora solo aparecen los links de cerrar sesi贸n de editar y para ir a las tareas.

Aqui pueden encontrar traducciones de diferentes idiomas: traducciones. As铆 ya no hay que traducirlo a mano.

Devise

Devise es una gema muy conocida y querida en el mundo de Rails, ya que permite generar modelos con un sistema de autenticaci贸n muy robusto y ya configurado. Repositorio: https://github.com/heartcombo/devise

Para instalar esta gema hay que agregarla al Gemfile y ejecutar el comando bundle install, seguido de esto hay que instalar el generador de devise con el comando rails g devise:install.

Ahora, para introducir usuarios al sistema es necesario crear un modelo, pero como este ser谩 un modelo con autenticaci贸n se va a generar con devise, con el comando devise g devise User. Una vez generado el modelo hay que ejecutar una migraci贸n de la forma habitual (rails db:migrate).

Devise tiene una serie de m贸dulos que pueden ser implementados en los modelos para hacer un sistema de inicio de sesi贸n de forma sencilla. Por defecto devise a帽ade los m贸dulos database_authenticable, registerable, recoverable, rememberable y validateable.

Rutas

En el archivo config>routes.rb divise agreg贸 el m茅todo devise_for :users, que agregar谩 autom谩ticamente todas las rutas para users necesarias al sistema. Para consultar las rutas se puede usar el comando rails routes | grep users en la terminal, o entrar con el navegador a la ruta /rails/info/routes donde se mostrar谩n todas las rutas de la aplicaci贸n.

Con la ruta /users/sign_up puedes acceder a la GUI para registrar un nuevo usuario.


Para hacer que solo los usuarios que hayan iniciado sesi贸n puedan acceder al sistema hay que indicar en el archivo application_controller.rb que solo los usuarios autenticados van a poder interactuar con los scaffolds creados.

Para esto se a帽ade el m茅todo before_action :authenticate_user!.

M贸dulos de devise:

  • database_authenticable: Crea un hash y almacena una contrase帽a en la base de datos para validar la autenticidad de un usuario al iniciar sesi贸n. La autenticaci贸n se puede realizar tanto a trav茅s de solicitudes POST como de autenticaci贸n b谩sica HTTP.
  • omniauthable: Agrega soporte para OmniAuth.
  • confirmable: env铆a correos electr贸nicos con instrucciones de confirmaci贸n y verifica si una cuenta ya est谩 confirmada durante el inicio de sesi贸n.
  • cecoverable: Restablece la contrase帽a del usuario y env铆a instrucciones de reestablecimiento.
  • cegisterable: Maneja el registro de usuarios a trav茅s de un proceso de registro, lo que tambi茅n les permite editar y destruir su cuenta.
  • cememberable: Maneja el registro de usuarios a trav茅s de un proceso de registro, lo que tambi茅n les permite editar y destruir su cuenta.
  • trackable: Rastrea el recuento de inicios de sesi贸n, las marcas de tiempo y la direcci贸n IP.
  • timeoutable: Expira las sesiones que no han estado activas en un per铆odo de tiempo espec铆fico.
  • validatable: Proporciona validaciones de correo electr贸nico y contrase帽a. Es opcional y se puede personalizar, por lo que puede definir sus propias validaciones.
  • lockable: Locks an account after a specified number of failed sign-in attempts. Can unlock via email or after a specified time period.

Muy cool 馃槺 Me esta encantando Rails

Estoy usando rails 7 y tengo problemas con el link de logout, esto me aparece:

Para solucionarlo tuve que modificar la ruta de logout dentro de:

config/initializers/devise.rb
# cambiar:
  config.sign_out_via = :delete
# por
  config.sign_out_via = :get

Reinicializa el server y listo

Despu茅s de instalar devise, les puede pasar que al invocar comandos del devise, este no hace nada, para solucionar eso hacen lo siguiente:

> spring stop
> rails g devise:install

Buenisimo todo. Excelente profesor

Buenos apuntes.

Lo recomendable es usar rubygems para verificar la version que uno esta usando, asi de esta manera si otra persona quiere ver tu repo podra ejecutar la version correcta de cada gema.

gem 'devise', '~> 4.7', '>= 4.7.3'