Saltar al contenido principal

Introducción

Gestiona usuarios registrados: obtén perfiles, actualiza datos y maneja el estado de la cuenta.

Más información sobre la gestión de usuarios en el panel de administración de OneEntry: https://doc.oneentry.cloud/docs/category/users


🎯 ¿Qué hace este módulo?

El módulo Users gestiona al usuario ya autenticado: obtiene el perfil, actualiza los datos del formulario y el objeto state personalizado, archiva o elimina la cuenta, gestiona el carrito y la lista de deseos por usuario (o invitado), y registra tokens FCM para notificaciones push.

La registración y el inicio de sesión no están aquí; viven en el módulo AuthProvider. El módulo Users trabaja con el usuario que AuthProvider ya ha autorizado.

🚀 Inicio Rápido

Inicializa el módulo desde defineOneEntry:


const { Users } = defineOneEntry(
"your-project-url", {
"token": "your-app-token"
}
);

Obtén el usuario actual y actualiza su objeto state personalizado (asume una sesión autenticada — consulta AuthProvider):

// Fetch the authorized user's profile and state.
const user = await Users.getUser("en_US");

console.log(user.id, user.identifier);

// Update the user, preserving existing state.
await Users.updateUser({
formIdentifier: user.formIdentifier,
formData: user.formData,
state: { ...user.state, orderCount: (user.state.orderCount || 0) + 1 },
});

✨ Conceptos Clave

¿Qué es un Usuario?

Un Usuario es una cuenta registrada en tu aplicación:

  • Identificador - valor de inicio de sesión (correo electrónico, teléfono o nombre de usuario)
  • Proveedor de Autenticación - el método de autenticación utilizado (authProviderIdentifier)
  • Datos del Formulario - campos de perfil definidos por el formulario de registro (formData)
  • Grupos - array de IDs de grupos a los que pertenece el usuario
  • Objeto de Estado - datos personalizados de la aplicación

Estructura del Usuario

Cada usuario tiene esta estructura:

{
id: 8, // User ID
identifier: 'test@test.ru', // User identifier (email/login)
authProviderIdentifier: 'email', // Auth provider type
formIdentifier: 'reg', // Registration form identifier
formData: [ // User profile data
{ marker: 'name_reg', type: 'string', value: 'Ivan' },
{ marker: 'phone_reg', type: 'string', value: '+19258382556' },
],
groups: [1], // User groups for permissions
state: {}, // Custom application data
moduleFormConfigs: [], // Additional form configurations
}

Objeto de Estado

Puedes almacenar cualquier dato específico de la aplicación en el objeto state por usuario. Cuando actualizas al usuario, agrega los datos que necesites a state; las llamadas posteriores a getUser() lo devuelven.

Caso de UsoEjemplo de EstadoDescripción
E-commerce{ orderCount: 5, totalSpent: 499.99 }Rastrear el historial de compras
Contenido{ articlesRead: 25, bookmarks: [1,2,3] }Rastrear el consumo de contenido
Juegos{ level: 15, score: 9500, achievements: [...] }Rastrear el progreso en el juego
SaaS{ plan: 'premium', usage: 75 }Rastrear datos de suscripción

Siempre preserva el estado existente al actualizar — expándelo para no perder otros campos:

// ❌ Bad - overwrites the entire state
const state = { orderCount: 1 };

// ✅ Good - preserve existing state
const state = {
...user.state,
orderCount: (user.state.orderCount || 0) + 1,
};

📋 Lo Que Necesitas Saber

Autorización requerida

Cada método de usuario requiere una sesión autorizada — autentica al usuario primero a través del módulo AuthProvider. Los métodos de carrito y lista de deseos también funcionan para invitados (consulta la sección de Carrito y Lista de Deseos a continuación).

Datos del formulario de usuario

Los datos del perfil del usuario siguen los formularios configurados en el panel de administración de OneEntry:

  • Cada usuario tiene un formIdentifier que hace referencia al formulario de registro utilizado.
  • Los campos del perfil viven en el array formData como entradas marker / type / value.
  • Los tipos de campo soportados incluyen: string, integer, float, date, dateTime, time, text, textWithHeader, image, groupOfImages, file, radioButton, list, entity, timeInterval.

Directrices del objeto de estado

  • Almacena solo datos específicos de la aplicación; no pongas contraseñas, tokens o datos de tarjetas en state.
  • Mantenlo organizado con objetos anidados y nombres consistentes.
  • Actualiza expandiendo el state existente (consulta arriba) — nunca sobrescribas ciegamente.

Datos de notificación

Al actualizar un usuario, puedes pasar un objeto notificationData con canales de entrega:

  • email - dirección de correo electrónico para notificaciones
  • phonePush - array de números de teléfono para notificaciones push
  • phoneSMS - número de teléfono para notificaciones SMS

Paginación

Para listas de carrito/lista de deseos y otras colecciones, pagina a través de los resultados en lugar de cargar todo de una vez.


📊 Tabla de Referencia Rápida

MétodoDescripciónCaso de Uso
getUser() 🔐Obtener datos del usuario autorizadoObtener perfil del usuario actual
updateUser() 🔐Actualizar información del usuarioActualizaciones de perfil, cambios de estado
archiveUser() 🔐Archivar cuenta de usuarioEliminar suavemente la cuenta de usuario
deleteUser() 🔐Eliminar usuario permanentementeEliminar completamente la cuenta de usuario
addFCMToken() 🔐Agregar token FCM para notificaciones pushHabilitar notificaciones push
deleteFCMToken() 🔐Eliminar token FCMDeshabilitar notificaciones push
getCart()Obtener el carrito del usuario o invitadoLeer el carrito actual
setCart()Reemplazar todo el carritoSincronizar un carrito del lado del cliente
addCartItem()Agregar un ítem al carritoAcción "Agregar al carrito"
removeCartItem()Eliminar un ítem del carritoAcción "Eliminar del carrito"
getWishlist()Obtener la lista de deseos del usuario o invitadoLeer la lista de deseos actual
setWishlist()Reemplazar toda la lista de deseosSincronizar una lista de deseos del lado del cliente
addWishlistItem()Agregar un ítem a la lista de deseosAcción "Agregar a la lista de deseos"
removeWishlistItem()Eliminar un ítem de la lista de deseosAcción "Eliminar de la lista de deseos"

🔐 marca los métodos que requieren una sesión de usuario autorizada (AuthProvider). Los métodos de carrito y lista de deseos también funcionan para invitados.

🛒 Carrito y Lista de Deseos

Los métodos de carrito y lista de deseos funcionan tanto para usuarios autorizados como para invitados. Para un invitado, el SDK envía un encabezado x-guest-id para que el carrito/lista de deseos esté vinculado al visitante anónimo correcto - consulta Modo invitado. Una vez que un invitado inicia sesión, los mismos métodos operan sobre los datos del usuario autenticado.

Estos métodos también alimentan los bloques de personalización (como complemento de carrito, carrito similar y lista de deseos similar) y pueden combinarse con el seguimiento de actividad del usuario.

❓ Preguntas Comunes (FAQ)

¿Qué es el objeto de estado del usuario y cómo debo usarlo?

El objeto state es un almacenamiento JSON flexible para datos específicos del usuario en la aplicación. Úsalo para rastrear métricas personalizadas como conteos de pedidos, preferencias o progreso. Siempre expande el estado existente al actualizar para evitar sobrescribir otros datos.


¿Cómo actualizo la información del perfil del usuario?

Usa updateUser() para modificar los campos de datos del formulario, configuraciones de notificación y el objeto state. Autentica al usuario primero a través del módulo AuthProvider.


¿Cuál es la diferencia entre archiveUser() y deleteUser()?

archiveUser() es una eliminación suave que marca al usuario para eliminación pero preserva los datos. deleteUser() elimina permanentemente la cuenta del usuario. Usa el archivo a menos que necesites una eliminación completa de datos.


¿Cómo manejo las notificaciones push para los usuarios?

Usa addFCMToken() para registrar un token de Firebase Cloud Messaging para el usuario, habilitando notificaciones push en sus dispositivos. Usa deleteFCMToken() cuando inicien sesión o deshabiliten las notificaciones.


¿Cómo obtengo datos del usuario después de la registración?

Después de una registración y autenticación exitosas a través de AuthProvider, llama a getUser() para obtener el perfil del usuario autenticado y el objeto state personalizado.


🎓 Mejores Prácticas

  • Autentica primero - cada método de usuario requiere una sesión autorizada (consulta el módulo AuthProvider).
  • Preserva el estado existente - expande los datos existentes al actualizar state.
  • No almacenes datos sensibles en el estado - mantén contraseñas, tokens y datos de tarjetas fuera de state.
  • Cachea los datos del usuario - reduce las llamadas a la API para datos de acceso frecuente.

🔗 Documentación Relacionada