fix and update

This commit is contained in:
lendry
2026-07-01 12:14:50 +03:00
parent dce16af5a5
commit 6929fb41fc
7 changed files with 152 additions and 64 deletions

View File

@@ -3046,7 +3046,11 @@ verify_fedcm_endpoints() {
return 0
elif [[ "$code" == "000" ]]; then
echo -e " ${RED}${NC} FedCM web-identity недоступен (${apex_domain}) — ERR_CERT или DNS"
echo " Добавьте ${apex_domain} в hosts/DNS и примите сертификат (FedCM всегда запрашивает eTLD+1)."
echo " Добавьте ${apex_domain} в hosts/DNS и примите сертификат в браузере на каждом клиенте:"
echo " откройте https://${apex_domain}/.well-known/web-identity → «Дополнительно» → принять риск."
if [[ "$(env_get SSL_TYPE none)" == "selfsigned" ]]; then
echo " Надёжнее: импортируйте ${LOCAL_CERTS_DIR}/shared-intranet/fullchain.pem в «Доверенные корневые центры»."
fi
return 1
elif [[ "$code" == "502" ]]; then
echo -e " ${RED}${NC} FedCM web-identity → 502 (${apex_domain}) — проверьте nginx/conf.d/${NGINX_PREFIX}-fedcm-apex.conf"
@@ -3084,6 +3088,40 @@ validate_ssl_cert_covers_apex() {
return 1
}
# Синхронизирует PUBLIC_* из .env в SystemSetting — иначе FedCM login_url остаётся localhost:3002.
sync_public_system_settings() {
load_env
[[ -n "${PUBLIC_API_URL:-}" || -n "${PUBLIC_FRONTEND_URL:-}" ]] || return 0
if ! docker_cmd ps --format '{{.Names}}' 2>/dev/null | grep -q '^lendry-id-postgres$'; then
warn "Postgres недоступен — PUBLIC_* в БД не обновлены (FedCM login_url может указывать на localhost)"
return 0
fi
local pg_user pg_pass pg_db sql
pg_user="$(env_get POSTGRES_USER lendry)"
pg_pass="$(env_get POSTGRES_PASSWORD lendry_password)"
pg_db="$(env_get POSTGRES_DB lendry_id)"
sql=""
if [[ -n "${PUBLIC_API_URL:-}" ]]; then
sql+="UPDATE \"SystemSetting\" SET value='${PUBLIC_API_URL}', \"updatedAt\"=NOW() WHERE key='PUBLIC_API_URL';"
fi
if [[ -n "${PUBLIC_FRONTEND_URL:-}" ]]; then
sql+="UPDATE \"SystemSetting\" SET value='${PUBLIC_FRONTEND_URL}', \"updatedAt\"=NOW() WHERE key='PUBLIC_FRONTEND_URL';"
fi
if [[ -n "${DOMAIN_FRONTEND:-}" ]]; then
sql+="UPDATE \"SystemSetting\" SET value='${DOMAIN_FRONTEND}', \"updatedAt\"=NOW() WHERE key='PROJECT_DOMAIN';"
fi
[[ -n "$sql" ]] || return 0
if docker_cmd exec -e PGPASSWORD="$pg_pass" lendry-id-postgres \
psql -U "$pg_user" -d "$pg_db" -v ON_ERROR_STOP=1 -c "$sql" >/dev/null 2>&1; then
ok "SystemSetting: PUBLIC_API_URL / PUBLIC_FRONTEND_URL синхронизированы из .env"
else
warn "Не удалось обновить PUBLIC_* в SystemSetting — проверьте значения в админке → Настройки"
fi
}
write_all_nginx_configs() {
ensure_nginx_mode_for_config_write
local ssl_type="${1:-$(env_get SSL_TYPE none)}"
@@ -4018,6 +4056,7 @@ action_fix_all_errors() {
check_sso_idp_api_proxy || fail "SSO /idp-api/health недоступен — см. nginx/conf.d/${NGINX_PREFIX}-frontend.conf"
check_sso_frontend_root || fail "SSO / → 502 — главная страница недоступна (502 Bad Gateway в браузере)"
verify_sso_idp_api_burst || warn "Нестабильный /idp-api/health — при 502 в браузере: docker compose --profile proxy exec nginx nginx -s reload"
sync_public_system_settings || true
validate_ssl_cert_covers_apex || true
verify_fedcm_endpoints || warn "FedCM endpoints недоступны — см. DNS/SSL для eTLD+1 и nginx/conf.d/${NGINX_PREFIX}-fedcm-apex.conf"
if ! docker_nginx_container_running; then