Saltar al contenido principal

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:

  1. Registro: El usuario completa el formulario de registro
  2. Login automático: El usuario queda autenticado automáticamente
  3. Email de verificación: Se envía un email con un link de verificación (válido por 48 horas)
  4. Banner recordatorio: El usuario ve un banner recordatorio hasta verificar su email
  5. Verificación: Al hacer clic en el link, el email se verifica
  6. 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):

  1. Validación: Se verifica la contraseña actual del usuario
  2. Actualización: Se actualiza el email en la base de datos
  3. Marcado como no verificado: El email se marca automáticamente como email_verified = False
  4. Token de verificación: Se genera un nuevo token de verificación
  5. Email de verificación: Se envía automáticamente un email de verificación al nuevo correo
  6. Banner recordatorio: El banner de verificación aparece nuevamente hasta que se verifique el nuevo email
  7. 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

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

  1. Perfil de Empresa

    • Verificación de datos fiscales (CIF)
    • Verificación de información de la empresa
    • Validación administrativa
  2. 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ón
  • verified: Perfil verificado y aprobado
  • rejected: 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_verificado se 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

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:

  1. Estado draft: Proyecto en edición
  2. Estado pending_publication: Enviado para validación
  3. Estado published_private o published_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