[POC] Añadir devise-webauthn en vez de implementar a mano la lógica para iniciar sesión con passkeys
#962
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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 dePasskeycon un nuevo modeloWebauthnCredential. 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
devise-webauthnal proyecto, habilitando soporte para autenticación con passkeys en Devise.Passkey, la estrategia personalizadaPasskeyStrategyy en su lugar se introdujo un nuevo modeloWebauthnCredentialya que es el nombre de modelo que utilizadevise-webauthn.Users::PasskeysControllerpara que herede deDevise::PasskeysController, eliminando práctimante toda su lógica. Se dejó simplemente elindexque no es proveído pordevise-webauthn.login_with_passkey_button,passkey_creation_form_for).passkeys_controller.jsawebauthn_credentials_controller.js(como lo generadevise-webauthn, cambiando los nombres de los targets y el manejo de parámetros para que funcionen con los helpers y controllers dedevise-webauthn.