# ===== Runtime =====
NODE_ENV=development
PORT=4040
AUTH_LOCAL_PORT=4040            # coincide con 'expose' del servicio auth

# ===== Session (usa el Redis del stack) =====
# Para DEV podemos reutilizar el Redis de Authentik. En prod conviene uno separado.
SESSION_SECRET=pon-una-clave-larga-y-unica
REDIS_URL=redis://authentik-redis:6379

# ===== DB principal (metadatos de SuiteCoffee) =====
# Usa el alias de red del servicio 'db' (compose: aliases [dev-db])
DB_HOST=dev-db
DB_PORT=5432
DB_NAME=dev-suitecoffee
DB_USER=dev-user-suitecoffee
DB_PASS=dev-pass-suitecoffee

# ===== DB tenants (Tenants de SuiteCoffee) =====
TENANTS_HOST=dev-tenants
TENANTS_DB=dev-postgres
TENANTS_USER=dev-user-postgres
TENANTS_PASS=dev-pass-postgres
TENANTS_PORT=5432

TENANT_INIT_SQL=/home/mateo/SuiteCoffee/services/auth/src/db/initTenant.sql
# TENANT_INIT_SQL=~/SuiteCoffee/services/app/src/db/01_init.sql

# ===== (Opcional) Colores UI, si alguna vista los lee =====
COL_PRI=452D19      # Marrón oscuro
COL_SEC=D7A666      # Crema / Café
COL_BG=FFA500       # Naranja

# ===== Authentik — Admin API (server-to-server dentro de la red) =====
# Usa el alias de red del servicio 'authentik' y su puerto interno 9000
AUTHENTIK_BASE_URL=http://authentik:9000
AUTHENTIK_TOKEN=eE3bFTLd4Rpt3ZkcidTC1EppDYMIr023ev3SXt4ImHynOfAGRVtAZVBXSNxj
AUTHENTIK_DEFAULT_GROUP_NAME=suitecoffee-users

# ===== OIDC (DEBE coincidir con el Provider) =====
# DEV (todo dentro de la red de Docker):
# - El auth service redirige al navegador a este issuer. Si NO tenés reverse proxy hacia Authentik,
#   esta URL interna NO será accesible desde el navegador del host. En ese caso, ver nota más abajo.
OIDC_ISSUER=https://authentik.suitecoffee.mateosaldain.uy/application/o/suitecoffee/
OIDC_CLIENT_ID=ydnp9s9I7G4p9Pwt5OsNlcpk1VKB9auN7AxqqNjC
OIDC_CLIENT_SECRET=yqdI00kYMeQF8VdmhwN5QWUzPLUzRBYeeAH193FynuVD19mo1nBRf5c5IRojzPrxDS0Hk33guUwHFzaj8vjTbTRetwK528uNJ6BfrYGUN2vzxgdMHFLQOHSTR0gR1LtG

# Redirect URI que definiste en el Provider. Usa el alias de red del servicio 'auth' (dev-auth)
# Si accedés desde el host sin proxy, usa mejor http://localhost:4040/auth/callback y añadilo al Provider.
OIDC_REDIRECT_URI=https://suitecoffee.mateosaldain.uy/auth/callback

# Cómo querés que maneje la contraseña Authentik para usuarios NUEVOS creados por tu backend:
# - TEMP_FORCE_CHANGE: crea un password temporal y obliga a cambiar en el primer login (recomendado si usás login con usuario/clave)
# - INVITE_LINK: envías/entregás un link de “establecer contraseña” (necesita flow de Enrollment/Recovery y SMTP configurado)
# - SSO_ONLY: no setea password local; login solo por Google/Microsoft/WebAuthn
AK_PASSWORD_MODE=TEMP_FORCE_CHANGE

# (Opcional) longitud del password temporal
AK_TEMP_PW_LENGTH=12


# 3) Configuración en Authentik (por modo)
    # A) TEMP_FORCE_CHANGE (password temporal + cambio obligado)
        # Flow de Autenticación
        # Entra al Admin de Authentik → Flows → tu Authentication Flow (el que usa tu Provider OIDC).
        # Asegurate de que tenga:
        # Identification Stage (identifica por email/username),
        # Password Stage (para escribir contraseña).
        # Con eso, cuando el usuario entre con la clave temporal, Authentik le pedirá cambiarla.
        # Provider OIDC (suitecoffee)
        # Admin → Applications → Providers → tu provider de SuiteCoffee → Flow settings
        # Authentication flow: seleccioná el de arriba.
        # (Opcional) Email SMTP
        # Si querés notificar o enviar contraseñas temporales/enlaces desde Authentik, configura SMTP en Admin → System → Email.
        # Resultado: el usuario se registra en tu app → lo redirigís a /auth/login → Authentik pide email+clave → entra con la temporal → obliga a cambiarla → vuelve a tu app.

    # B) INVITE_LINK (enlace de “establecer contraseña”)
        # SMTP
        # Admin → System → Email: configura SMTP (host, puerto, credenciales, remitente).
        # Flow de Enrollment/Recovery
        # Admin → Flows → clona/crea un flow de Enrollment/Recovery con:
        # Identification Stage (email/username),
        # Email Stage (envía el link con token),
        # Password Stage (para que defina su clave),
        # (opcional) Prompt/ User Write para confirmar.
        # Guardalo con un Slug fácil (ej. enroll-set-password).
        # Cómo usarlo
        # Caminos:
        # Manual desde UI: Admin → Directory → Invitations → crear invitación, elegir Flow enroll-set-password, seleccionar usuario, copiar link y enviar.
        # Automático (más adelante): podemos automatizar por API la creación de una Invitation y envío de mail. (Si querés, te armo el helper akCreateInvitation(userUUID, flowSlug).)
        # Resultado: el registro en tu app no pone password; el usuario recibe un link para establecer la clave y desde ahí inicia normalmente.

    # C) SSO_ONLY (sin contraseñas locales)
        # Configura un Source (Google Workspace / Microsoft Entra / WebAuthn):
        # Admin → Directory → Sources: crea el Source (por ejemplo, Google OAuth o Entra ID).
        # Activa Create users (para que se creen en Authentik si no existen).
        # Mapea email y name.
        # Authentication Flow
        # Agrega una Source Stage del proveedor (Google/Microsoft/WebAuthn) en tu Authentication Flow.
        # (Podés dejar Password Stage deshabilitado si querés solo SSO.)
        # Provider OIDC
        # En tu Provider suitecoffee, seleccioná ese Authentication Flow.
        # Resultado: el usuario se registra en tu app → al entrar a /auth/login ve botón Iniciar con Google/Microsoft → hace click, vuelve con sesión, tu backend setea sc.sid.