Autenticación
Closegram admite varias formas de registrarse e iniciar sesión, todas respaldadas por Firebase Authentication: correo y contraseña, inicio de sesión con Google, inicio de sesión con Apple, y número de teléfono con un código de un solo uso por SMS (OTP). Los usuarios también pueden activar la autenticación de dos factores para mayor seguridad, y el flujo de inicio de sesión incluye restablecimiento de contraseña, verificación de correo y el registro del dispositivo para notificaciones push.
Cada propiedad tiene su propia casilla que indica si esa parte específica está completamente implementada y es funcional de extremo a extremo (frontend-nextjs + backend) — actualízalas tú mismo a medida que se complete el trabajo; esta página no las sobrescribirá.
- Registrarse con correo y contraseña
- Multicuenta — permanece conectado a varias cuentas en un mismo dispositivo y cambia entre ellas (agregar cuenta / cerrar sesión de una / cerrar sesión de todas); las cuentas se guardan del lado del cliente en
localStorage, con el token activo reflejado para Apollo (AccountSwitcherMenu.tsx) - Iniciar sesión con correo y contraseña
- Inicio de sesión con Google (vía Firebase)
- Inicio de sesión con Apple
- Número de teléfono + OTP (código por SMS), incluido en iOS — el backend está listo de dos formas:
loginWithIdToken(Firebase Phone Auth del lado del cliente, luego se intercambia el ID token — lo que usa el cliente web actualmente) y el par directorequestPhoneOtp/loginWithPhone(SMS respaldado por Twilio,PHONE_LOGIN_PROVIDER=twilio, sin necesitar el SDK de Firebase Phone Auth del lado del cliente). Ambos tienen archivos de operación compartidos listos enpackages/graphql/operations/Web/Auth/.apps/iosya implementa el par directo de extremo a extremo (el botón de Teléfono deWelcomeView→ modo teléfono deLoginView→RequestPhoneOtpUseCase→VerifyCodeView→loginWithPhone, todo el camino a través deAuthRepository/AuthServicehasta las mutaciones GraphQL reales — sin ningún stub o TODO en ese camino) - Autenticación de dos factores mediante app autenticadora (configurar, verificar, desactivar) — ahora se exige al iniciar sesión (se requiere un código TOTP válido o un código de respaldo para completar el inicio de sesión).
- Autenticación de dos factores mediante SMS / correo — la autoinscripción está conectada de extremo a extremo en Configuración → Seguridad: elige SMS o Correo,
enableTwoFactorenvía un código (SMS al número ingresado, correo a la dirección de la cuenta),verifyTwoFactorSetuplo confirma y muestra los códigos de respaldo, igual que el 2FA por app autenticadora de arriba. El inicio de sesión ya enviaba un código nuevo y lo exigía para cualquier cuenta con uno de estos métodos guardado (user_two_factor) incluso antes de que existiera la autoinscripción. - Ver y copiar los códigos de respaldo (se muestran al configurar el 2FA)
- Regenerar los códigos de respaldo más adelante
- Olvidé mi contraseña / restablecer mediante enlace por correo
- Cambiar contraseña (con la sesión iniciada)
- Verificación de correo
- Inicio de sesión con passkey (WebAuthn) — registra una passkey en Ajustes → Seguridad e inicia sesión con Face ID / Touch ID / una llave de seguridad. En la pantalla inicial, al escribir un correo/usuario y pulsar Continuar se comprueba en silencio si esa cuenta tiene una passkey: si la tiene, aparece el diálogo de passkey del sistema operativo; si no la tiene, pasa directo al paso de la contraseña (sin un diálogo confuso del sistema para quienes no tienen passkey). Basado en
@simplewebauthny el resolverwebauthn. - Registro del token del dispositivo para notificaciones push, incluido en iOS — el backend está completamente construido y listo (mutation
registerDeviceToken,device-token.manager.js, persistencia real, tests, y el archivo de operación compartido enpackages/graphql/operations/Web/DeviceTokens/RegisterDeviceToken.graphql, así queapollo-swiftya lo tiene disponible);apps/iosya lo llama (PushNotificationManager→DeviceTokenService.registerDeviceToken()→ la mutation real, sin ningún stub o TODO en ese camino)
Consulta la referencia técnica para ver los esquemas de GraphQL, rutas, enlaces a los archivos fuente y el estado de implementación de cada campo.