Skip to main content

Documentation Index

Fetch the complete documentation index at: https://wiki.vivla.com/llms.txt

Use this file to discover all available pages before exploring further.

Descripción

El módulo Auth maneja login, registro, reset de contraseña, gestión de tokens y modo visitante.
  • Ubicación: src/modules/auth/
Este módulo implementa un sistema de bloqueo por intentos fallidos: tras 5 intentos incorrectos, la cuenta se bloquea durante 15 minutos.

Screens

ScreenRutaDescripción
LoginScreen/(auth)/loginLogin con email/contraseña, soporte para invitaciones
ResendScreen/(auth)/resend-passwordReenvío de email de reset
ResetScreen/(auth)/reset-passwordFormulario de nueva contraseña

API Endpoints

MétodoPathDescripción
POST/auth/loginLogin con credenciales
POST/auth/registerRegistro de nuevo usuario
PUT/auth/reset-passwordSolicitar reset de contraseña
POST/auth/logoutCerrar sesión
POST/auth/delete-accountEliminar cuenta
POST/auth/refresh-tokenRenovar access token
GET/users/meObtener usuario actual

Hooks

HookDescripción
useAuth()Hook principal: login, logout, resetPassword, resendPassword, initializeAuth
useAuthState()Selector de estado de autenticación
useRegister()Lógica de registro con manejo de errores

Tipos principales

const MAX_LOGIN_ATTEMPTS = 5;
const LOCKOUT_DURATION = 15; // minutos

const TOKEN*KEY = "token";
const REFRESH_TOKEN_KEY = "refreshToken";
const USER_KEY = "user";
const SESSION_TIMEOUT = 24 * 60 \_ 60 \* 1000; // 24 horas

Store

El módulo utiliza authStore en Zustand con almacenamiento híbrido (AsyncStorage + SecureStore).
Los tokens se almacenan en SecureStore para mayor seguridad. No acceder directamente a ellos fuera de este módulo.
Ver Autenticación para detalles del flujo JWT.

Componentes destacados

LoginForm

Formulario de login con validación y manejo de errores inline.

ResendForm

Formulario para reenvío de email de reseteo de contraseña.

ResetPasswordForm

Formulario para establecer una nueva contraseña tras el reset.

AuthError

Componente de visualización de errores de autenticación con mapeo de códigos.

authService

Servicio singleton que centraliza la lógica de autenticación:
  • Login attempt lockout: Máximo 5 intentos (MAX_LOGIN_ATTEMPTS), bloqueo de 15 minutos (LOCKOUT_DURATION).
  • Manejo de errores: Mapeo de códigos de error del backend a mensajes legibles.
  • Gestión de tokens: Almacenamiento seguro y renovación automática.

Modo visitante

El método loginAsVisitor() permite explorar la app sin necesidad de crear una cuenta. Los visitantes tienen acceso limitado a funcionalidades de solo lectura.