feat(features): agregar login con correo/contraseña vía Supabase Auth - #42
Merged
Conversation
… (issue #27) SupabaseAuthService gana signUpAndLinkAnonymous (vincula correo/ contraseña a la sesión anónima activa con updateUser — conserva el mismo playerId/historial en vez de crear una cuenta aparte, distinto de linkIdentity que es para proveedores OAuth), signInWithPassword (reemplaza la sesión anónima por la de una cuenta ya existente), signOut y resetPasswordForEmail. AuthSessionNotifier expone esos métodos sin tocar `state` si fallan, para no invalidar la sesión activa mientras la pantalla muestra el error. Tres pantallas nuevas en features/auth/presentation/screens/ (AccountScreen, SignUpScreen, LoginScreen), accesibles desde una sección "Cuenta" nueva en Ajustes solo si Supabase está configurado — la app sigue arrancando 100% invitada por default, este login es opt-in. Login con Google queda para una issue aparte.
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Resumen
SupabaseAuthServicesolo teníasignInAnonymously()(Fase 7) — un jugador anónimo pierde su identidad y su historial de
partidas si desinstala la app o cambia de dispositivo.
SupabaseAuthServiceganasignUpAndLinkAnonymous(vinculacorreo/contraseña a la sesión anónima activa con
updateUser,conserva el mismo
playerId/historial en vez de crear una cuentaaparte — distinto de
linkIdentity, que es para proveedores OAuth),signInWithPassword(reemplaza la sesión anónima por la de una cuentaya existente, recuperando su historial),
signOutyresetPasswordForEmail.AuthSessionNotifierexpone esos métodos y solo actualizastatesitienen éxito — si fallan, la excepción llega a la pantalla para
mostrar el error sin invalidar la sesión (anónima) que ya estaba
activa.
features/auth/presentation/screens/(
AccountScreen,SignUpScreen,LoginScreen, con recuperación decontraseña vía diálogo), accesibles desde una sección "Cuenta" nueva
en Ajustes solo si Supabase está configurado — la app sigue
arrancando 100% invitada por default, este login es opt-in.
mencionada en la propia Login con correo/contraseña vía Supabase Auth #27).
docs/ARCHITECTURE.md/ROADMAP.mdactualizados; bump de versión a0.8.0+54en commit aparte.Test plan
test/features/auth/data/supabase_auth_service_test.dart: los 4métodos nuevos contra
SupabaseClient/GoTrueClientmockeados(mocktail) — incluye verificar que
updateUserrecibe elUserAttributescorrecto.test/features/auth/presentation/providers/auth_providers_test.dart:AuthSessionNotifierend-to-end contra los mismos dobles, incluyendoel caso de error (el
stateconserva la sesión previa).account_screen_test.dart,sign_up_screen_test.dart,login_screen_test.dart): flujo de invitado → crear cuenta / iniciarsesión, validación de contraseñas que no coinciden,
AuthExceptionmostrado inline, recuperar contraseña.
SettingsScreen: la sección "Cuenta" solo aparece con Supabaseconfigurado y navega a
AccountScreen.flutter analyze --fatal-infos,dart format --set-exit-if-changed,flutter testcompleto (385 tests) — todo verde.iniciar sesión, recuperar contraseña, cerrar sesión, comportamiento
según el toggle "Confirm email"): a cargo del mantenedor, no
reproducible desde este entorno.