Cómo funciona la autenticación de Sushi SaaS
Recorre el inicio de sesión incluido y decide qué proveedores, verificación, MFA, tenancy y controles de abuso debe conservar tu producto.
Esta guía ayuda a tratar la autenticación como una decisión de producto, no como una pantalla de login. Sushi SaaS usa Better Auth para la identidad y añade las reglas de tenant, recuperación, moderación y auditoría que necesita el resto del starter.
Recorrido predeterminado
- El usuario se registra con email y contraseña, o con Google cuando están configuradas ambas credenciales OAuth.
- El registro con contraseña exige verificar el email. La verificación correcta puede encolar la concesión única de créditos iniciales.
- El registro crea una organización personal; una ruta de reparación la crea después si el hook se interrumpió.
- El inicio de sesión solo crea una sesión tras comprobar el ciclo de vida y una posible suspensión.
- Restablecer la contraseña revoca las sesiones existentes.
La autenticación de dos factores está disponible, pero no es obligatoria en la aplicación de cliente. En la consola de administración sí es obligatoria, además de un rol admin_ro o admin_rw.
La configuración está en src/lib/auth.ts del commit 2a1a04a. Variables y callbacks se explican en Autenticación y administración.
Decisiones antes de lanzar
| Decisión | Elección incluida | Cuándo cambiarla |
|---|---|---|
| Métodos de acceso | Email/contraseña; Google si está configurado | Los usuarios necesitan passwordless, SSO empresarial u otro proveedor |
| Verificación de email | Obligatoria con contraseña | Tu riesgo permite cuentas sin verificar; decide también cuándo entregar beneficios iniciales |
| MFA de cliente | Disponible y elegido por el usuario | Los datos exigen step-up o MFA obligatorio |
| MFA de admin | Obligatorio | Consérvalo salvo que lo sustituyas por una política operativa igual de fuerte |
| Protección antibot | Turnstile protege credenciales y correo cuando se habilita; la configuración de producción falla de forma cerrada según la elección | Usas otro control de edge o identidad y actualizas validación y tests |
| Creación de tenant | Cada cuenta obtiene una organización personal | El producto es realmente individual y retiras el alcance de organización de extremo a extremo |
No desactives sin más la verificación dejando los créditos iniciales ligados a su hook. Decide si mover la concesión, eliminarla o exigir otra prueba de calidad de cuenta.
Identidad no es autorización
Una sesión válida responde “quién es”, pero no da acceso a todos los datos. Los roles determinan acciones; los entitlements del plan determinan las capacidades compradas por la organización. Sushi mantiene separadas esas preguntas.
El plugin de organizaciones de Better Auth gestiona owner, admin y member. Los servicios añaden límites de plazas, protección del último owner y garantía de que todo usuario conserve un workspace. La eliminación genérica se desactiva porque borrar solo tablas de auth dejaría datos de cobro y producto huérfanos.
Lee Organizaciones y equipos antes de cambiar roles o selección de tenant.
Recuperación y controles de abuso
Turnstile puede proteger endpoints de credenciales y correo. Los controles de alta abarcan contraseña y OAuth; la creación de sesión bloquea cuentas suspendidas o en borrado, sea cual sea el acceso. Los errores visibles usan códigos localizados, no mensajes internos.
La política sigue siendo tuya: quién suspende, cómo se apela, cuánto dura una sesión, qué eventos se guardan y qué puede modificar soporte.
Plan de pruebas de producción
- Prueba alta, reenvío, caducidad y acceso tras verificar.
- Restablece la contraseña y confirma que las sesiones antiguas dejan de funcionar.
- Prueba cada callback OAuth configurado en su origen de producción.
- Prueba alta, verificación, recuperación y desactivación de MFA; protege los códigos de respaldo.
- Prueba en concurrencia los límites de invitaciones y la protección del último owner.
- Inicializa ambos roles de admin y confirma MFA en el origen administrativo.
Continúa con Configuración de la consola de administración. Esta guía refleja el commit 2a1a04a.