#!/usr/bin/env bash
# 偶合 OppHub · 登录
# 老板 11:41 修正：邮箱/手机号 + 验证码登录（不调飞书 OAuth）

set -e

OPPHUB_HOME="${OPPHUB_HOME:-$HOME/.opphub}"
API_BASE="${OPPHUB_API_BASE:-https://api.opphub.ruiplus.cn}"

GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m'

step() { echo -e "${BLUE}━━━ $1 ━━━${NC}"; }
ok()   { echo -e "${GREEN}✓ $1${NC}"; }
warn() { echo -e "${YELLOW}⚠ $1${NC}"; }
fail() { echo -e "${RED}✗ $1${NC}"; exit 1; }

mkdir -p "$OPPHUB_HOME"

step "偶合登录"
echo ""
echo "  1) 邮箱 + 验证码"
echo "  2) 手机号 + 验证码"
echo "  3) 邮箱 + 密码"
echo "  4) 手机号 + 密码"
echo ""
read -p "请选择 [1-4]: " METHOD

case "$METHOD" in
  1) TYPE="email"; USE_CODE=true; NEED_PASSWORD=false ;;
  2) TYPE="phone"; USE_CODE=true; NEED_PASSWORD=false ;;
  3) TYPE="email"; USE_CODE=false; NEED_PASSWORD=true ;;
  4) TYPE="phone"; USE_CODE=false; NEED_PASSWORD=true ;;
  *) fail "请输入 1-4" ;;
esac

read -p "请输入您的 $([ "$TYPE" = "email" ] && echo "邮箱" || echo "手机号"): " TARGET

if [ "$USE_CODE" = "true" ]; then
  # 发送验证码
  echo "发送验证码到 $TARGET ..."
  RESP=$(curl -s -X POST "$API_BASE/v1/auth/code/send" \
    -H "Content-Type: application/json" \
    -d "{\"type\":\"$TYPE\",\"target\":\"$TARGET\",\"purpose\":\"login\"}")

  if echo "$RESP" | grep -q '"ok":true'; then
    ok "验证码已发送"
  else
    fail "发送失败：$(echo "$RESP" | grep -o '"error":"[^"]*"' | head -1)"
  fi

  read -p "请输入验证码: " CODE
  PASSWORD=""
else
  read -s -p "请输入密码: " PASSWORD
  echo ""
  CODE=""
fi

# 登录
RESP=$(curl -s -X POST "$API_BASE/v1/auth/login" \
  -H "Content-Type: application/json" \
  -d "{\"type\":\"$TYPE\",\"target\":\"$TARGET\",\"code\":\"$CODE\",\"password\":\"$PASSWORD\"}")

if echo "$RESP" | grep -q '"ok":true'; then
  OPC_ID=$(echo "$RESP" | grep -o '"opcId":"[^"]*"' | cut -d'"' -f4)
  TOKEN=$(echo "$RESP" | grep -o '"opphubToken":"[^"]*"' | cut -d'"' -f4)
  EMAIL=$(echo "$RESP" | grep -o '"email":"[^"]*"' | cut -d'"' -f4)
  PHONE=$(echo "$RESP" | grep -o '"phone":"[^"]*"' | cut -d'"' -f4)

  cat > "$OPPHUB_HOME/state.json" <<EOF
{
  "opc_id": "$OPC_ID",
  "opphub_token": "$TOKEN",
  "type": "$TYPE",
  "target": "$TARGET",
  "email": "$EMAIL",
  "phone": "$PHONE",
  "last_login_at": "$(date -Iseconds)"
}
EOF
  chmod 600 "$OPPHUB_HOME/state.json"

  ok "登录成功！"
  echo "  OPC ID: $OPC_ID"
  echo ""
  echo "现在您可以："
  echo "  opphub profile    # 查看店铺"
  echo "  opphub status     # 看状态"
else
  ERR=$(echo "$RESP" | grep -o '"error":"[^"]*"' | head -1 | cut -d'"' -f4)
  fail "登录失败：$ERR"
fi
