# Configuración de autenticación de Clamshell

## Estado actual

`login.html` es solo una pantalla de interfaz. **No autentica usuarios**, no crea sesiones y no guarda ni envía credenciales. Los botones sociales muestran un aviso porque todavía no hay un proveedor conectado.

## Propuesta para la primera versión real

Usar Supabase Auth para centralizar la autenticación por correo y los proveedores sociales. Supabase documenta acceso por correo/contraseña y proveedores sociales como Google y Facebook:

- Guía general: https://supabase.com/docs/guides/auth
- Google: https://supabase.com/docs/guides/auth/social-login/auth-google
- Facebook: https://supabase.com/docs/guides/auth/social-login/auth-facebook
- URLs de retorno: https://supabase.com/docs/guides/auth/redirect-urls

## Pasos antes de activar el inicio de sesión

1. Crear un proyecto de Supabase bajo control del propietario de Clamshell.
2. Definir la URL oficial de la aplicación y las URLs de retorno permitidas para desarrollo y producción.
3. Activar correo electrónico y elegir si se utilizará contraseña o enlace/código de un solo uso.
4. Crear una aplicación OAuth en Google Cloud y registrar sus credenciales en el panel de autenticación de Supabase.
5. Crear una aplicación de Facebook/Meta, configurar Facebook Login, registrar exactamente la URL de callback indicada por Supabase y configurar las credenciales en Supabase.
6. Probar con cuentas de desarrollo antes de solicitar la revisión necesaria para uso público.
7. Configurar el cliente de la aplicación con la URL del proyecto y su clave publicable. Nunca incluir secretos de proveedor, claves de administración ni claves de servicio en HTML o JavaScript del navegador.
8. Proteger los datos privados por usuario en el backend; iniciar sesión por sí solo no garantiza que cada usuario solo pueda leer sus propios datos.
9. Probar alta, inicio de sesión, cierre de sesión, recuperación, expiración de sesión, errores de proveedor y revocación de acceso.

## ¿Y Gmail?

Para los usuarios, la opción debe llamarse **Google** o **Continuar con Google**. El usuario puede elegir su cuenta de Gmail en la página oficial de Google. Clamshell nunca debe pedir la contraseña de Gmail.

## ¿Y Facebook e Instagram?

Facebook Login se puede integrar con una aplicación Meta registrada y configurada. Instagram no debe mostrarse como una opción genérica prometida: las APIs de Instagram están orientadas a usos específicos, como cuentas profesionales de creadores y empresas, y no constituyen un proveedor universal de inicio de sesión para cualquier cuenta personal. Para esta primera versión, priorizar correo y Google; añadir Facebook después de configurar y probar Meta. Mantener Instagram fuera del flujo de autenticación hasta confirmar una opción oficial adecuada para el caso de uso.

## Requisitos de seguridad

- Usar HTTPS en producción.
- No guardar contraseñas, tokens ni secretos en `localStorage`.
- No confiar en la interfaz como control de acceso; comprobar permisos en el servidor/base de datos.
- Habilitar políticas de acceso por fila (RLS) para datos personales si se usa la base de datos de Supabase.
- No activar acceso público hasta revisar privacidad, términos, recuperación de cuenta y seguridad.
- Mantener las funciones locales actuales separadas de la identidad hasta diseñar cómo migrar los datos de demostración a una cuenta sin filtrar datos entre usuarios.

## Siguiente paso de implementación

Cuando exista el proyecto de autenticación y estén configurados los proveedores, sustituir los avisos de demostración en `login.html` por llamadas al SDK oficial, crear una sesión real y proteger el panel. No se deben inventar IDs ni secretos para hacer que los botones aparenten funcionar.
