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 Uso | Ejemplo de Estado | Descripció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
formIdentifierque hace referencia al formulario de registro utilizado. - Los campos del perfil viven en el array
formDatacomo entradasmarker/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
stateexistente (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 notificacionesphonePush- array de números de teléfono para notificaciones pushphoneSMS- 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étodo | Descripción | Caso de Uso |
|---|---|---|
| getUser() 🔐 | Obtener datos del usuario autorizado | Obtener perfil del usuario actual |
| updateUser() 🔐 | Actualizar información del usuario | Actualizaciones de perfil, cambios de estado |
| archiveUser() 🔐 | Archivar cuenta de usuario | Eliminar suavemente la cuenta de usuario |
| deleteUser() 🔐 | Eliminar usuario permanentemente | Eliminar completamente la cuenta de usuario |
| addFCMToken() 🔐 | Agregar token FCM para notificaciones push | Habilitar notificaciones push |
| deleteFCMToken() 🔐 | Eliminar token FCM | Deshabilitar notificaciones push |
| getCart() | Obtener el carrito del usuario o invitado | Leer el carrito actual |
| setCart() | Reemplazar todo el carrito | Sincronizar un carrito del lado del cliente |
| addCartItem() | Agregar un ítem al carrito | Acción "Agregar al carrito" |
| removeCartItem() | Eliminar un ítem del carrito | Acción "Eliminar del carrito" |
| getWishlist() | Obtener la lista de deseos del usuario o invitado | Leer la lista de deseos actual |
| setWishlist() | Reemplazar toda la lista de deseos | Sincronizar una lista de deseos del lado del cliente |
| addWishlistItem() | Agregar un ítem a la lista de deseos | Acción "Agregar a la lista de deseos" |
| removeWishlistItem() | Eliminar un ítem de la lista de deseos | Acció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
- Módulo AuthProvider - Requerido para la autenticación de usuarios
- Panel de Administración de OneEntry - Usuarios - Documentación oficial del panel de administración
- Módulo de Pedidos - Los pedidos hacen referencia a los usuarios para el historial de pedidos
- Módulo de Pagos - Los pagos hacen referencia a los usuarios para el historial de pagos