Gestion de Usuarios
API completa para crear, actualizar y gestionar usuarios en tu aplicacion.
Modelo de Usuario
interface User {
id: string; // ID unico del usuario
externalId?: string; // ID externo opcional
email: string; // Email principal
emailVerified: boolean; // Estado de verificacion
phone?: string; // Telefono opcional
phoneVerified: boolean; // Estado de verificacion
username?: string; // Username opcional
firstName?: string; // Nombre
lastName?: string; // Apellido
avatarUrl?: string; // URL del avatar
publicMetadata: Record<string, any>; // Metadata publica
privateMetadata: Record<string, any>; // Metadata privada
unsafeMetadata: Record<string, any>; // Metadata del cliente
banned: boolean; // Usuario baneado
locked: boolean; // Usuario bloqueado
createdAt: string; // Fecha de creacion
updatedAt: string; // Ultima actualizacion
}Obtener usuario actual
En el cliente
import { useUser } from '@auris/react';
function Profile() {
const { user, isLoaded } = useUser();
if (!isLoaded) return <Loading />;
if (!user) return <SignIn />;
return (
<div>
<h1>Hola, {user.firstName}!</h1>
<p>{user.email}</p>
</div>
);
}En el servidor (Next.js)
import { currentUser } from '@auris/nextjs/server';
export default async function ProfilePage() {
const user = await currentUser();
if (!user) {
redirect('/sign-in');
}
return <div>Usuario: {user.email}</div>;
}Actualizar perfil
import { useUser } from '@auris/react';
function EditProfile() {
const { user, update } = useUser();
const handleSubmit = async (data) => {
await update({
firstName: data.firstName,
lastName: data.lastName,
});
};
// ...
}Backend SDK
Listar usuarios
const { data, totalCount } = await auris.users.list({
limit: 20,
offset: 0,
orderBy: '-createdAt', // - para descendente
query: 'juan', // Busqueda por nombre/email
});
console.log(`Total: ${totalCount} usuarios`);
for (const user of data) {
console.log(user.email);
}Obtener usuario por ID
const user = await auris.users.get('user_xxxxx');Obtener usuario por email
const user = await auris.users.getByEmail('juan@email.com');Crear usuario
const user = await auris.users.create({
email: 'nuevo@email.com',
password: 'securePassword123!',
firstName: 'Juan',
lastName: 'Perez',
emailVerified: true, // Opcional: saltar verificacion
publicMetadata: {
plan: 'pro',
},
});Actualizar usuario
const user = await auris.users.update('user_xxxxx', {
firstName: 'Juan Carlos',
publicMetadata: {
plan: 'enterprise',
customField: 'value',
},
});Eliminar usuario
await auris.users.delete('user_xxxxx');Metadata
Auris soporta tres tipos de metadata para usuarios:
publicMetadata
Visible en el cliente y servidor. Solo modificable desde el servidor.
// Casos de uso:
// - Rol del usuario
// - Plan de suscripcion
// - Permisos
await auris.users.update('user_xxxxx', {
publicMetadata: {
role: 'admin',
plan: 'pro',
features: ['analytics', 'export'],
},
});privateMetadata
Solo visible en el servidor. Nunca se envia al cliente.
// Casos de uso:
// - IDs de sistemas externos
// - Datos sensibles
// - Notas internas
await auris.users.update('user_xxxxx', {
privateMetadata: {
stripeCustomerId: 'cus_xxxxx',
internalNotes: 'Cliente VIP',
salesRepId: 'rep_123',
},
});unsafeMetadata
Modificable desde el cliente. Para preferencias del usuario.
// En el cliente
const { user, update } = useUser();
await update({
unsafeMetadata: {
theme: 'dark',
language: 'es',
notifications: true,
},
});Acciones de usuario
Banear usuario
// Banear - el usuario no puede iniciar sesion
await auris.users.ban('user_xxxxx');
// Desbanear
await auris.users.unban('user_xxxxx');Bloquear usuario
// Bloquear temporalmente (ej: despues de intentos fallidos)
await auris.users.lock('user_xxxxx');
// Desbloquear
await auris.users.unlock('user_xxxxx');Revocar sesiones
// Cerrar todas las sesiones del usuario
await auris.users.revokeSessions('user_xxxxx');Cambiar contrasena
await auris.users.updatePassword('user_xxxxx', {
newPassword: 'newSecurePassword123!',
});Verificacion de email
Enviar email de verificacion
await auris.users.sendVerificationEmail('user_xxxxx');Verificar email con codigo
await auris.users.verifyEmail('user_xxxxx', {
code: '123456',
});Avatar
// Actualizar avatar con URL
await auris.users.update('user_xxxxx', {
avatarUrl: 'https://example.com/avatar.jpg',
});
// O subir imagen directamente
const user = await auris.users.setAvatar('user_xxxxx', {
file: imageBuffer, // Buffer o Blob
});Webhooks de usuarios
Eventos disponibles:
user.created- Nuevo usuario registradouser.updated- Usuario actualizadouser.deleted- Usuario eliminadouser.signed_in- Inicio de sesionuser.signed_out- Cierre de sesion
// Ejemplo de payload
{
"type": "user.created",
"data": {
"id": "user_xxxxx",
"email": "nuevo@email.com",
"firstName": "Juan",
"lastName": "Perez",
"createdAt": "2024-01-15T10:30:00Z"
}
}