Se ajustaron los problemas de renderizado y redirección mayores de https://suitecoffee.uy/ Se re-creó el archivo ~/SuiteCoffee/services/app/src/index.js para mantener un orden adecuado Las rutas exigen una cookie de seción para cargarse, de o contrario redireccionan a https://suitecoffee.uy/auth/login para iniciar o crear sesión de usuario, excepto https://suitecoffee.uy/inicio que se mantene de esta manera con motivos de desarrollo
103 lines
5.6 KiB
Plaintext
103 lines
5.6 KiB
Plaintext
# ===== Runtime =====
|
|
NODE_ENV=development
|
|
PORT=4040
|
|
|
|
# ===== Session (usa el Redis del stack) =====
|
|
# Para DEV podemos reutilizar el Redis de Authentik. En prod conviene uno separado.
|
|
SESSION_SECRET=Neon*Mammal*Boaster*Ludicrous*Fender8*Crablike
|
|
REDIS_URL=redis://ak-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=/app/src/db/initTenant.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://dev-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_ISSUER=https://sso.suitecoffee.uy/application/o/suitecoffee/
|
|
OIDC_CLIENT_ID=1orMM8vOvf3WkN2FejXYvUFpPtONG0Lx1eMlwIpW
|
|
OIDC_CLIENT_SECRET=t5wx13qBcM0EFQ3cGnUIAmLzvbdsQrUVPv1OGWjszWkEp35pJQ55t7vZeeShqG49kuRAaiXv6PSGJLhRfGaponGaJl8gH1uCL7KIxdmm7UihgYoAXB2dFhZV4zRxfze2
|
|
|
|
# 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
|
|
OIDC_REDIRECT_URI=https://suitecoffee.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. |