import { ShieldAlert } from "lucide-react";
import { useAuth } from "react-oidc-context";
import { t } from "../../lib/i18n";
import { resolveProfileRole } from "../../lib/role";

interface Props {
  resourceToken: "audit" | "clients";
}

export function ForbiddenMessage({ resourceToken }: Props) {
  const auth = useAuth();
  const rawProfile = auth.user?.profile as Record<string, unknown> | undefined;
  const role = resolveProfileRole(rawProfile);

  let explanation = t(
    "msg.dev.forbidden.default",
    "해당 리소스에 접근할 권한이 없습니다. 관리자에게 문의하세요.",
  );

  if (role === "rp_admin") {
    explanation = t(
      "msg.dev.forbidden.rp_admin",
      "RP 관리자는 담당 앱의 리소스만 조회할 수 있습니다.",
    );
  } else if (role === "tenant_admin") {
    explanation = t(
      "msg.dev.forbidden.tenant_admin",
      "테넌트 관리자 권한이 올바르게 설정되지 않았거나 만료되었습니다.",
    );
  } else if (role === "user" || role === "tenant_member") {
    explanation = t(
      "msg.dev.forbidden.user",
      "일반 사용자는 관리자 화면에 접근할 수 없습니다.",
    );
  }

  const title = t("msg.dev.forbidden.title", "{{resource}} 접근 권한 없음", {
    resource:
      resourceToken === "audit"
        ? t("ui.dev.audit.title", "Audit Logs")
        : t("ui.dev.clients.registry.subtitle", "연동 앱"),
  });

  return (
    <div className="flex flex-col items-center justify-center p-12 text-center text-red-500/90 gap-3">
      <ShieldAlert className="h-10 w-10 text-red-500/80 mb-2" />
      <h3 className="text-xl font-bold text-foreground">{title}</h3>
      <p className="text-sm text-muted-foreground max-w-md">{explanation}</p>
    </div>
  );
}
