Integrar autenticación Cognito con Floci local y soporte AWS

- Añade servicios y configuración Cognito para login web (admins) y API (scanners)
- Soporta Floci cuando AWS_ENDPOINT_URL está definido; AWS real en caso contrario
- Incluye bootstrap Floci, docker-compose.local.yml y carga automática en run-local.sh
- Documenta arquitectura, flujos y arranque manual/IntelliJ en README
- Actualiza gitignore: excluye Flutter, H2 local y artefactos generados
This commit is contained in:
Alejandro Lara
2026-06-09 16:59:50 -06:00
parent f8468350d5
commit 59bd2d2d8a
116 changed files with 1733 additions and 4318 deletions
+60 -11
View File
@@ -1,6 +1,9 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
COGNITO_ENV_FILE="$SCRIPT_DIR/docker/floci/generated/cognito.local.env"
MIN_JAVA_VERSION=25
is_valid_jdk() {
@@ -71,6 +74,39 @@ resolve_java_home() {
return 1
}
wait_for_cognito_env() {
local elapsed=0
local timeout=120
while [[ ! -f "$COGNITO_ENV_FILE" && $elapsed -lt $timeout ]]; do
sleep 2
elapsed=$((elapsed + 2))
if (( elapsed % 10 == 0 )); then
echo "Esperando bootstrap de Cognito en Floci..." >&2
fi
done
[[ -f "$COGNITO_ENV_FILE" ]]
}
load_cognito_local_env() {
if [[ -n "${AWS_ENDPOINT_URL:-}" ]]; then
echo "AWS_ENDPOINT_URL ya definido; omitiendo carga de cognito.local.env" >&2
return 0
fi
if [[ ! -f "$COGNITO_ENV_FILE" ]]; then
echo "No se encontro $COGNITO_ENV_FILE. Exporta las variables Cognito manualmente." >&2
return 1
fi
set -a
# shellcheck disable=SC1090
source "$COGNITO_ENV_FILE"
set +a
echo "Variables Cognito cargadas desde docker/floci/generated/cognito.local.env" >&2
}
JAVA_HOME="$(resolve_java_home)"
export JAVA_HOME
export PATH="$JAVA_HOME/bin:$PATH"
@@ -86,21 +122,34 @@ else
echo "Base de datos: H2 en archivo local (./data/h2/). Para PostgreSQL usa: SPRING_PROFILES_ACTIVE=postgres ./run-local.sh" >&2
fi
if [[ "$PROFILE" == *"postgres"* ]]; then
if command -v docker >/dev/null 2>&1; then
if docker compose version >/dev/null 2>&1; then
docker compose -f docker-compose-postgres.local.yml up -d
else
echo "Docker Compose no esta disponible. Instala Docker Compose o levanta PostgreSQL manualmente." >&2
exit 1
fi
FLOCI_STARTED=false
if command -v docker >/dev/null 2>&1 && docker compose version >/dev/null 2>&1; then
COMPOSE_FILE="$SCRIPT_DIR/docker-compose.local.yml"
mkdir -p "$SCRIPT_DIR/docker/floci/generated"
chmod 777 "$SCRIPT_DIR/docker/floci/generated" 2>/dev/null || true
if [[ "$PROFILE" == *"postgres"* ]]; then
echo "Levantando PostgreSQL y Floci (Cognito local)..." >&2
docker compose -f "$COMPOSE_FILE" up -d postgres floci
else
echo "Docker no esta disponible. Instala Docker o usa el perfil dev con H2." >&2
exit 1
echo "Levantando Floci (Cognito local) en http://localhost:4566 ..." >&2
docker compose -f "$COMPOSE_FILE" up -d floci
fi
FLOCI_STARTED=true
elif [[ "$PROFILE" == *"postgres"* ]]; then
echo "Docker Compose no esta disponible. Instala Docker o levanta PostgreSQL manualmente." >&2
exit 1
fi
if [[ "$FLOCI_STARTED" == true ]]; then
if wait_for_cognito_env; then
load_cognito_local_env || true
else
echo "Advertencia: timeout esperando cognito.local.env. Revisa Floci o exporta las variables manualmente." >&2
fi
fi
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
mvn -pl base-admin-web-jar -am -DskipTests install