From 3f4fed08d55caa32002f77c3a523f7353711d57b Mon Sep 17 00:00:00 2001 From: Ricardo Carneiro Date: Sun, 21 Sep 2025 14:35:10 -0300 Subject: [PATCH] fix: login microsoft --- deploy/docker-stack.yml | 52 ++++++++++++++++++++++++ scripts/swarm_deploy.sh | 84 +++++++++++++++++++++++++++++++++++++++ src/BCards.Web/Program.cs | 6 +++ 3 files changed, 142 insertions(+) create mode 100644 deploy/docker-stack.yml create mode 100644 scripts/swarm_deploy.sh diff --git a/deploy/docker-stack.yml b/deploy/docker-stack.yml new file mode 100644 index 0000000..888548b --- /dev/null +++ b/deploy/docker-stack.yml @@ -0,0 +1,52 @@ +version: '3.8' + +configs: + bcards-appsettings: + external: true + +services: + bcards-app: + image: registry.redecarneir.us/bcards:latest + networks: + - bcards-net + deploy: + replicas: 4 + placement: + max_replicas_per_node: 2 + update_config: + parallelism: 1 + order: start-first + delay: 10s + monitor: 60s + failure_action: rollback + rollback_config: + parallelism: 0 + delay: 5s + configs: + - source: bcards-appsettings + target: /app/appsettings.Production.json + mode: 0444 + environment: + ASPNETCORE_ENVIRONMENT: Production + ASPNETCORE_URLS: http://+:8080 + ASPNETCORE_FORWARDEDHEADERS_ENABLED: "true" + MongoDb__ConnectionString: mongodb://admin:c4rn31r0@129.146.116.218:27017,141.148.162.114:27017/BCardsDB?replicaSet=rs0&authSource=admin + MongoDb__DatabaseName: BCardsDB + Serilog__OpenSearchUrl: http://141.148.162.114:19201 + Serilog__OpenSearchFallback: http://129.146.116.218:19202 + Logging__LogLevel__Default: Information + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + ports: + - published: 8080 + target: 8080 + protocol: tcp + mode: ingress + +networks: + bcards-net: + external: true diff --git a/scripts/swarm_deploy.sh b/scripts/swarm_deploy.sh new file mode 100644 index 0000000..71b9789 --- /dev/null +++ b/scripts/swarm_deploy.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ $# -lt 4 ]]; then + echo "Usage: $0 [expected-replicas]" >&2 + exit 1 +fi + +STACK_NAME="$1" +SERVICE_NAME="$2" +STACK_FILE="$3" +HEALTH_URL="$4" +EXPECTED_REPLICAS="${5:-4}" + +SERVICE_FQDN="${STACK_NAME}_${SERVICE_NAME}" +LOG_PREFIX="[swarm-deploy]" + +log() { + printf '%s %s %s\n' "$(date --iso-8601=seconds)" "$LOG_PREFIX" "$*" +} + +retry() { + local attempts=$1; shift + local delay=$1; shift + local n=1 + while true; do + if "$@"; then + return 0 + fi + if (( n == attempts )); then + return 1 + fi + ((n++)) + sleep "$delay" + done +} + +log "Deploying stack '${STACK_NAME}' using ${STACK_FILE}" +docker stack deploy --compose-file "$STACK_FILE" "$STACK_NAME" + +log "Waiting for service ${SERVICE_FQDN} to reach ${EXPECTED_REPLICAS} replicas" +retries=24 +while (( retries > 0 )); do + replicas_raw=$(docker service ls --filter "name=${SERVICE_FQDN}" --format '{{.Replicas}}' || true) + if [[ -z "$replicas_raw" ]]; then + log "Service ${SERVICE_FQDN} not found yet; retrying" + sleep 5 + ((retries--)) + continue + fi + replicas_clean=${replicas_raw%% (*} + running=${replicas_clean%%/*} + desired=${replicas_clean##*/} + if [[ "$running" == "$desired" && "$running" == "$EXPECTED_REPLICAS" ]]; then + log "Service reached desired replica count: ${running}/${desired}" + break + fi + log "Current replicas ${running}/${desired}; waiting..." + sleep 5 + ((retries--)) +done + +if (( retries == 0 )); then + log "Timed out waiting for replicas" + docker service ps "$SERVICE_FQDN" + exit 1 +fi + +log "Checking task states" +if ! docker service ps "$SERVICE_FQDN" --no-trunc --filter 'desired-state=Running' --format '{{.CurrentState}}' | grep -q '^Running '; then + log "Some tasks are not running" + docker service ps "$SERVICE_FQDN" + exit 1 +fi + +log "Running health check against ${HEALTH_URL}" +if ! retry 3 5 curl -fsS "$HEALTH_URL"; then + log "Health check failed; rolling back service" + docker service update --rollback "$SERVICE_FQDN" || true + exit 1 +fi + +log "Health check succeeded" +log "Deployment finished successfully" diff --git a/src/BCards.Web/Program.cs b/src/BCards.Web/Program.cs index a5f0b4d..6c06e93 100644 --- a/src/BCards.Web/Program.cs +++ b/src/BCards.Web/Program.cs @@ -399,6 +399,12 @@ authBuilder.AddGoogle(options => redirectUri += "&prompt=login"; } + if (!redirectUri.Contains("options=")) + { + redirectUri += "&options=disable_passkey"; + logger.LogWarning($"ADDED options=disable_passkey - Modified RedirectUri: {redirectUri}"); + } + logger.LogWarning($"Final RedirectUri: {redirectUri}"); context.Response.Redirect(redirectUri); return Task.CompletedTask;