Skip to content

Conversation

@santiagorodriguez96
Copy link
Collaborator

@santiagorodriguez96 santiagorodriguez96 commented Dec 11, 2025

Este PR migra la lógica de autenticación con passkeys de la aplicación para usar la gema oficial devise-webauthn, reemplazando la implementación personalizada de Passkey con un nuevo modelo WebauthnCredential. Actualiza los flujos de autenticación, controladores, modelos, el esquema de la base de datos y las integraciones en la interfaz de usuario para alinearlos con el nuevo enfoque, simplificando el mantenimiento y aprovechando las mejoras de seguridad provenientes de la gema.

Cambiar el nombre de la tabla en el cual guardamos las passkeys va a causar que se pierdan las passkeys ya creadas pero como no están habilitadas en producción supuse que no iba a ser problema.

Detalles

  • Se añadió la gema devise-webauthn al proyecto, habilitando soporte para autenticación con passkeys en Devise.
  • Se eliminó el modelo Passkey, la estrategia personalizada PasskeyStrategy y en su lugar se introdujo un nuevo modelo WebauthnCredential ya que es el nombre de modelo que utiliza devise-webauthn.
  • Se refactorizó Users::PasskeysController para que herede de Devise::PasskeysController, eliminando práctimante toda su lógica. Se dejó simplemente el index que no es proveído por devise-webauthn.
  • Se actualizaron las rutas de Devise para que use nuestro controller custom passkeys.
  • Se actualizaron los forms y partials relacionados con passkeys para usar los nuevos helpers (login_with_passkey_button, passkey_creation_form_for).
  • Se renombró y actualizó el controlador de Stimulus de passkeys_controller.js a webauthn_credentials_controller.js (como lo genera devise-webauthn, cambiando los nombres de los targets y el manejo de parámetros para que funcionen con los helpers y controllers de devise-webauthn.

Copy link
Collaborator

@RenzoMinelli RenzoMinelli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Esto va a dropear todas las passkeys creadas en produccion, que pasa con los manejadores de passkeys en los navegadores? Van a decir que tienen una configurada cuando ya no existe mas. Hay alguna forma de migrar la data de la tabla vieja a la nueva?

@santiagorodriguez96
Copy link
Collaborator Author

Esto va a dropear todas las passkeys creadas en produccion, que pasa con los manejadores de passkeys en los navegadores? Van a decir que tienen una configurada cuando ya no existe mas. Hay alguna forma de migrar la data de la tabla vieja a la nueva?

Todavía no tenemos las passkeys habilitadas en producción – está atrás de una feature flag que está apagada. Pero de no ser así, estás en lo correcto: sería un problema y tendríamos que resolverlo con una data migration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants