import { useQuery } from "@tanstack/react-query";
import {
Briefcase,
Building2,
Fingerprint,
Mail,
Shield,
User,
} from "lucide-react";
import { useState } from "react";
import { useAuth } from "react-oidc-context";
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from "../../components/ui/card";
import { t } from "../../lib/i18n";
import { fetchMe } from "../auth/authApi";
import ProfileTenantSwitcher from "./ProfileTenantSwitcher";
function ProfilePage() {
const auth = useAuth();
const hasAccessToken = Boolean(auth.user?.access_token);
const {
data: profile,
isLoading,
error,
} = useQuery({
queryKey: ["userMe"],
queryFn: fetchMe,
enabled: hasAccessToken,
});
const [activeTab, setActiveTab] = useState<"basic" | "role">("basic");
if (isLoading) {
return (
{t("ui.dev.profile.loading", "Loading profile...")}
);
}
if (error || !profile) {
return (
{t("ui.dev.profile.error", "Failed to load profile information.")}
);
}
// Fallback to token information if API data is incomplete
const displayTenant =
profile.tenant?.name ||
profile.tenantId ||
auth.user?.profile?.tenant_id?.toString() ||
"-";
const displayCompanyCode =
profile.companyCode || auth.user?.profile?.companyCode?.toString() || "-";
return (
{t("ui.dev.profile.title", "내 정보")}
{t(
"ui.dev.profile.subtitle",
"사용자 상세 정보 및 할당된 역할(Role)을 확인합니다.",
)}
{activeTab === "basic" && (
{t("ui.dev.profile.basic.title", "사용자 정보")}
{t("ui.dev.profile.basic.id", "User ID")}
{profile.id}
{t("ui.dev.profile.basic.name", "Name")}
{profile.name}
{t("ui.dev.profile.basic.email", "Email")}
{profile.email}
{t("ui.dev.profile.basic.phone", "Phone")}
{profile.phone || "-"}
{t("ui.dev.profile.org.title", "조직 정보")}
{t("ui.dev.profile.org.tenant", "테넌트")}
{displayTenant}
{t("ui.dev.profile.org.company_code", "회사 코드")}
{displayCompanyCode}
)}
{activeTab === "role" && (
{t("ui.dev.profile.role.title", "시스템 역할")}
{t(
"ui.dev.profile.role.description",
"현재 계정에 부여된 권한 등급입니다.",
)}
{t("ui.dev.profile.role.current", "Current Role")}
{t(
`ui.common.role.${profile.role}`,
profile.role.toUpperCase(),
)}
{t(
`ui.dev.profile.role.desc_${profile.role}`,
"시스템 역할에 대한 설명이 제공되지 않았습니다.",
)}
)}
);
}
export default ProfilePage;