#!/usr/bin/env bash set -euo pipefail # Quick checklist for Google OAuth readiness on current Laravel app. # Usage: # scripts/ops/netgescon-google-check.sh [--app-dir /var/www/netgescon] # scripts/ops/netgescon-google-check.sh --base-url https://staging.netgescon.it --resolve-local APP_DIR="${PWD}" BASE_URL="" RESOLVE_LOCAL=0 while [[ $# -gt 0 ]]; do case "$1" in --app-dir) APP_DIR="$2" shift 2 ;; --base-url) BASE_URL="$2" shift 2 ;; --resolve-local) RESOLVE_LOCAL=1 shift ;; *) echo "Unknown option: $1" echo "Usage: $0 [--app-dir ] [--base-url ] [--resolve-local]" exit 1 ;; esac done if [[ ! -f "$APP_DIR/.env" ]]; then echo "Error: .env not found in $APP_DIR" exit 1 fi echo "== Google OAuth Check ==" echo "App dir: $APP_DIR" php -r ' $envPath = $argv[1] . "/.env"; $keys = ["APP_URL", "GOOGLE_CLIENT_ID", "GOOGLE_CLIENT_SECRET", "GOOGLE_REDIRECT_URI"]; $map = []; foreach (file($envPath, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) { if ($line === "" || $line[0] === "#" || strpos($line, "=") === false) continue; [$k, $v] = explode("=", $line, 2); $map[$k] = trim($v); } foreach ($keys as $k) { $v = $map[$k] ?? ""; $ok = ($v !== "" && strtolower($v) !== "null"); echo $k . ": " . ($ok ? "SET" : "MISSING") . PHP_EOL; } ' "$APP_DIR" if [[ -z "$BASE_URL" ]]; then BASE_URL="$(php -r '$u=""; foreach(file("'"$APP_DIR"'/.env", FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES) as $l){ if(strpos($l,"APP_URL=")===0){ $u=trim(substr($l,8)); break; }} echo rtrim($u,"/");')" fi if [[ -z "$BASE_URL" ]]; then echo "Error: APP_URL is empty and --base-url was not provided" exit 1 fi HOST="$(php -r 'echo parse_url($argv[1], PHP_URL_HOST) ?: "";' "$BASE_URL")" SCHEME="$(php -r 'echo parse_url($argv[1], PHP_URL_SCHEME) ?: "http";' "$BASE_URL")" PORT="$(php -r '$u=$argv[1]; $p=parse_url($u, PHP_URL_PORT); if($p){echo $p; exit;} $s=parse_url($u, PHP_URL_SCHEME) ?: "http"; echo ($s === "https") ? "443" : "80";' "$BASE_URL")" if [[ -n "$HOST" && "$HOST" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo echo "Warning: BASE_URL host is an IP ($HOST)." echo "If nginx uses server_name domains, direct IP checks can return 404 even when app is UP." fi echo echo "Expected callback route: /oauth/google/callback" echo "Route test (auth required, should redirect to login if guest):" TARGET_URL="${BASE_URL}/oauth/google/redirect" if [[ "$RESOLVE_LOCAL" -eq 1 && -n "$HOST" ]]; then echo "Route test mode: --resolve ${HOST}:${PORT}:127.0.0.1" curl -kI --resolve "${HOST}:${PORT}:127.0.0.1" "$TARGET_URL" | head -n 12 || true else curl -kI "$TARGET_URL" | head -n 12 || true fi