Ir al contenido

Onboarding y autenticación

CÉNIT cubre todo el ciclo de alta de usuarios — staff y jugadores — con cuatro flujos distintos, pensados para minimizar el trabajo manual del cuerpo técnico y eliminar fricción del lado del atleta.

  • Staff se invita uno por uno desde Settings → Usuarios.
  • Jugadores se activan en bloque con un único link grupal (recomendado) o se invita uno a uno desde el Plantel (legacy).
  • Todo invite cae en /auth/set-password para fijar la contraseña.
  • El correo sale por Resend (clave RESEND_API_KEY). Sin Resend configurado, el invite no llega.
FlujoRuta del staffRuta públicaCuándo usarlo
Self-onboarding masivo del plantel/dashboard/onboarding-link/onboarding/[token]Alta inicial del plantel completo. Recomendado.
Invitación individual de jugadorPlantel → perfil del jugador/auth/set-password?next=/playerJugador que se incorpora después del onboarding masivo.
Invitación de staff/dashboard/settings → Usuarios/auth/set-password?next=/dashboardCualquier miembro del cuerpo técnico.
Primer acceso (común a todos)n/a/auth/set-passwordPantalla final que cierra cualquier invite.

El self-onboarding masivo no le manda el mail al input del usuario: lo manda a players.email pre-cargado por el cuerpo técnico, o al fallback que el jugador escribe en la pantalla de confirmación. Así, si alguien curiosea la grilla y se hace pasar por otro jugador, el mail con el link cae igual en la casilla del titular real.

  • Self-onboarding masivo: hop, dir, sc.
  • Invitar jugador individual: hop, dir.
  • Invitar staff: hop, dir.

El resto de los roles ven los flujos pero no acceden a las acciones.

Sin RESEND_API_KEY + RESEND_FROM en Workers Secrets, ningún correo de invitación llega. Comportamiento por acción:

  • inviteOrgUser (staff) — devuelve { ok: false, error: "No se pudo enviar el email. Verificá la configuración de Resend." }. La membership igual queda creada.
  • invitePlayer y claimPlayer (jugador) — devuelven { ok: true, emailSent: false } y loguean warning en Sentry. La UI muestra el flag para indicar que el mail no salió.

NEXT_PUBLIC_SITE_URL se usa para armar el link absoluto del invite (default https://cenitapp.com).