Verificación
Floutic implementa sistemas de verificación para garantizar la calidad y confiabilidad de usuarios y empresas en la plataforma.
Verificación de Email
Flujo de Verificación
Cuando un usuario se registra en Floutic:
- Registro: El usuario completa el formulario de registro
- Login automático: El usuario queda autenticado automáticamente
- Email de verificación: Se envía un email con un link de verificación (válido por 48 horas)
- Banner recordatorio: El usuario ve un banner recordatorio hasta verificar su email
- Verificación: Al hacer clic en el link, el email se verifica
- Email de bienvenida: Tras verificar, se envía el email de bienvenida
Cambio de Email
Cuando un usuario cambia su dirección de email (PUT /api/users/me/email):
- Validación: Se verifica la contraseña actual del usuario
- Actualización: Se actualiza el email en la base de datos
- Marcado como no verificado: El email se marca automáticamente como
email_verified = False - Token de verificación: Se genera un nuevo token de verificación
- Email de verificación: Se envía automáticamente un email de verificación al nuevo correo
- Banner recordatorio: El banner de verificación aparece nuevamente hasta que se verifique el nuevo email
- Verificación requerida: El usuario debe verificar el nuevo email para completar el cambio
Características
- Restricciones: Aunque los usuarios pueden usar la plataforma normalmente sin verificar el email, se requiere email verificado para crear proyectos (empresas) o aplicar a proyectos (expertos)
- Banner recordatorio: Aparece un banner en la parte superior recordando verificar el email
- Reenvío: Los usuarios pueden solicitar un nuevo email de verificación (rate limit configurable por minutos)
- Cierre temporal: El banner se puede cerrar temporalmente (reaparece al día siguiente)
- Auditoría: Se registra la IP de solicitud usando headers de proxy confiables (X-Forwarded-For, CF-Connecting-IP) con fallback a conexión directa
Restricciones por Rol
Empresas
- Crear proyectos: Requiere email verificado, perfil completo, perfil verificado y datos fiscales (para primer proyecto)
- Otras funcionalidades: No requieren email verificado
Expertos
- Aplicar a proyectos: Requiere email verificado (a implementar)
- Otras funcionalidades: No requieren email verificado
Endpoints
Verificar Email
POST /api/auth/verify-email
Request:
{
"token": "token_de_verificacion_del_email"
}
Response:
{
"message": "Email verificado exitosamente"
}
Notas:
- No requiere autenticación
- El token expira en 48 horas
- Si el email ya está verificado, devuelve 200 con mensaje idempotente
Reenviar Email de Verificación
POST /api/auth/send-verification-email
Headers requeridos:
Authorization: Bearer <access_token>X-CSRF-Token: <csrf_token>
Response:
{
"message": "Email de verificación enviado"
}
Rate Limit:
- Máximo 1 solicitud por usuario cada N minutos (configurable en
EMAIL_VERIFICATION_RESEND_LIMIT_MINUTES) - Si se excede, devuelve error 429
Modelo de Datos
El modelo User incluye:
email_verified: bool- Indica si el email está verificado (default:False)email_verified_at: datetime | null- Fecha de verificación
Frontend
Banner de Verificación
El componente EmailVerificationBanner se muestra automáticamente cuando:
- El usuario está autenticado
user.email_verified === false
Ubicación: Se muestra en todas las páginas a través de AppShell
Características:
- Se puede cerrar temporalmente (oculto por 24 horas)
- Botón para reenviar email de verificación
- Desaparece automáticamente cuando el email se verifica
Página de Verificación
Ruta: /verificar-email?token=<token>
- Procesa el token de verificación
- Muestra estado de éxito o error
- Refresca la sesión desde el backend para confirmar
email_verified - Redirige automáticamente según el rol activo del usuario
Verificación de Perfiles
Tipos de Verificación
-
Perfil de Empresa
- Verificación de datos fiscales (CIF)
- Verificación de información de la empresa
- Validación administrativa
-
Perfil de Experto
- Verificación de identidad
- Validación de habilidades y experiencia
- Verificación de portfolio
Estados de Verificación
pending: Perfil creado, pendiente de verificaciónverified: Perfil verificado y aprobadorejected: Perfil rechazado (requiere corrección)
Requisitos para Verificación
Empresa
- CIF válido (formato español)
- Datos fiscales completos
- Información de la empresa completa
- Industria y sector especificados
Experto
- Datos personales completos
- Habilidades especificadas
- Portfolio o experiencia documentada
- Datos fiscales completos (para facturación)
Proceso de Verificación
1. Creación de Perfil
El usuario crea su perfil completando todos los campos requeridos:
// Frontend: ProfileFormEmpresa o ProfileFormExperto
const profile = {
// ... datos del perfil
verification_status: 'pending'
};
2. Envío para Verificación
El perfil se marca como pending automáticamente al crearse o actualizarse.
3. Revisión Administrativa
Los administradores revisan los perfiles pendientes desde el dashboard:
GET /api/admin/profiles/pending
Acciones disponibles:
- Aprobar perfil →
verified - Rechazar perfil →
rejected(con razón) - Solicitar más información
4. Notificación al Usuario
El usuario recibe notificación cuando:
- Su perfil es verificado
- Su perfil es rechazado
- Se solicita más información
Restricciones por Estado de Verificación
Empresas No Verificadas
Las empresas con perfil no verificado NO pueden:
- Crear proyectos
- Seleccionar expertos
- Realizar pagos
Mensajes mostrados:
- Alerta en dashboard: "Tu perfil está pendiente de verificación"
- Bloqueo en formulario de creación de proyecto
- Mensaje informativo sobre requisitos de verificación
Expertos No Verificados
Los expertos con perfil no verificado pueden:
- Aplicar a proyectos
- Ver marketplace
- Completar su perfil
Limitaciones:
- Menor visibilidad en búsquedas
- No pueden ser seleccionados para proyectos curados
- No pueden recibir invitaciones directas
Verificación Automática
Sincronización con GoHighLevel
Cuando un perfil se verifica, se sincroniza automáticamente con GoHighLevel:
- Etiqueta
perfil_verificadose añade al contacto - Lead Score se actualiza
- Campos personalizados se actualizan
Webhooks
Los cambios de estado de verificación pueden disparar webhooks externos (si están configurados).
API de Verificación
Obtener Estado de Verificación
GET /api/profiles/me/verification-status
Response:
{
"verification_status": "pending",
"verified_at": null,
"rejection_reason": null,
"can_create_projects": false
}
Verificar Perfil (Admin)
POST /api/admin/profiles/{id}/verify
Request:
{
"status": "verified",
"notes": "Perfil verificado correctamente"
}
Rechazar Perfil (Admin)
POST /api/admin/profiles/{id}/reject
Request:
{
"status": "rejected",
"reason": "CIF no válido",
"notes": "Por favor, corrige el CIF y vuelve a enviar"
}
Verificación de Datos Fiscales
Requisitos
Los datos fiscales son requeridos cuando:
- Una empresa crea su primer proyecto
- Un experto es seleccionado para su primer proyecto
Validación
Empresa (CIF):
- Formato español válido
- Dígito de control correcto
- Estructura: A12345678
Experto (NIF):
- Formato español válido
- Dígito de control correcto
- Estructura: 12345678A
Modal de Datos Fiscales
Cuando se requieren datos fiscales, se muestra un modal bloqueante:
<FiscalDataModal
isOpen={fiscalDataRequired}
onComplete={handleFiscalDataComplete}
profileType="empresa" | "experto"
/>
Características:
- No se puede cerrar sin completar
- Validación en tiempo real
- Mensajes de ayuda contextuales
Verificación de Proyectos
Validación Administrativa
Los proyectos también requieren validación administrativa antes de ser publicados:
- Estado
draft: Proyecto en edición - Estado
pending_publication: Enviado para validación - Estado
published_privateopublished_curated: Aprobado y publicado
Requisitos
- Perfil de empresa verificado
- Información completa del proyecto
- Presupuesto y fechas válidas
- Hitos definidos
Más Información
- Autenticación - Sistema de autenticación
- Cookies - Seguridad de cookies
- Headers - Security headers
- Frontend - Componentes - Componentes de perfiles