/* ─── 이미 로그인된 경우 메인으로 ───────────────── */
(function checkAlreadyLoggedIn() {
  const tok  = localStorage.getItem("guardia_token");
  const info = JSON.parse(localStorage.getItem("guardia_userinfo") || "{}");
  if (tok && info.username) {
    if (info.must_change_pw) {
      window.location.replace("/change-password");
    } else {
      window.location.replace("/");
    }
  }
})();

/* ─── DOM refs ────────────────────────────────── */
const form    = document.getElementById("login-form");
const errEl   = document.getElementById("login-error");
const btnEl   = document.getElementById("login-btn");
const btnText = document.getElementById("btn-text");
const spinner = document.getElementById("btn-spinner");
const pwInput = document.getElementById("password");
const pwToggle = document.getElementById("pw-toggle");

/* ─── 비밀번호 보기/숨기기 ──────────────────────── */
pwToggle.addEventListener("click", () => {
  if (pwInput.type === "password") {
    pwInput.type = "text";
    pwToggle.textContent = "🙈";
  } else {
    pwInput.type = "password";
    pwToggle.textContent = "👁";
  }
});

/* ─── 계정 자동 입력 ─────────────────────────── */
function fillLogin(username, password) {
  document.getElementById("username").value = username;
  pwInput.value = password;
  pwInput.focus();
}

/* ─── 로그인 ──────────────────────────────────── */
form.addEventListener("submit", async e => {
  e.preventDefault();

  const username = document.getElementById("username").value.trim();
  const password = pwInput.value;

  if (!username || !password) return;

  setLoading(true);
  errEl.style.display = "none";

  try {
    const res  = await fetch("/api/auth/login", {
      method:  "POST",
      headers: { "Content-Type": "application/json" },
      body:    JSON.stringify({ username, password }),
    });
    const data = await res.json();

    if (!res.ok) {
      showError(data.detail || "로그인에 실패했습니다");
      setLoading(false);
      return;
    }

    /* 토큰 + 사용자 정보 저장 */
    localStorage.setItem("guardia_token", data.access_token);
    localStorage.setItem("guardia_userinfo", JSON.stringify({
      username:     data.username,
      display_name: data.display_name,
      role:         data.role,
      must_change_pw: data.must_change_pw,
    }));

    /* 비밀번호 변경 필요 여부에 따라 리다이렉트 */
    if (data.must_change_pw) {
      window.location.replace("/change-password");
    } else {
      window.location.replace("/");
    }

  } catch {
    showError("서버에 연결할 수 없습니다. 잠시 후 다시 시도해 주세요.");
    setLoading(false);
  }
});

function setLoading(on) {
  btnEl.disabled    = on;
  btnText.textContent = on ? "로그인 중…" : "로그인";
  spinner.style.display = on ? "inline-block" : "none";
}

function showError(msg) {
  errEl.textContent   = msg;
  errEl.style.display = "block";
}

/* ─── Enter 키 처리 ───────────────────────────── */
document.getElementById("username").addEventListener("keydown", e => {
  if (e.key === "Enter") { e.preventDefault(); pwInput.focus(); }
});
