import { MoreVerticalIcon } from "lucide-react"; import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; import { Link } from "react-router-dom"; import { Button } from "@/components/ui/button"; import { Separator } from "@/components/ui/separator"; import { identityProviderServiceClient } from "@/grpcweb"; import { IdentityProvider } from "@/types/proto/api/v1/idp_service"; import { useTranslate } from "@/utils/i18n"; import showCreateIdentityProviderDialog from "../CreateIdentityProviderDialog"; import LearnMore from "../LearnMore"; import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover"; const SSOSection = () => { const t = useTranslate(); const [identityProviderList, setIdentityProviderList] = useState([]); useEffect(() => { fetchIdentityProviderList(); }, []); const fetchIdentityProviderList = async () => { const { identityProviders } = await identityProviderServiceClient.listIdentityProviders({}); setIdentityProviderList(identityProviders); }; const handleDeleteIdentityProvider = async (identityProvider: IdentityProvider) => { const confirmed = window.confirm(t("setting.sso-section.confirm-delete", { name: identityProvider.title })); if (confirmed) { try { await identityProviderServiceClient.deleteIdentityProvider({ name: identityProvider.name }); } catch (error: any) { console.error(error); toast.error(error.details); } await fetchIdentityProviderList(); } }; return (
{t("setting.sso-section.sso-list")}
{identityProviderList.map((identityProvider) => (

{identityProvider.title} ({identityProvider.type})

))} {identityProviderList.length === 0 && (

{t("setting.sso-section.no-sso-found")}

)}

{t("common.learn-more")}:

  • {t("setting.sso-section.single-sign-on")}
); }; export default SSOSection;