import { Divider, List, ListItem } from "@mui/joy"; import { useEffect, useState } from "react"; import { toast } from "react-hot-toast"; import { Link } from "react-router-dom"; import * as api from "@/helpers/api"; import { useGlobalStore } from "@/store/module"; import { useTranslate } from "@/utils/i18n"; import showCreateIdentityProviderDialog from "../CreateIdentityProviderDialog"; import { showCommonDialog } from "../Dialog/CommonDialog"; import LearnMore from "../LearnMore"; import Dropdown from "../kit/Dropdown"; interface State { disablePasswordLogin: boolean; } const SSOSection = () => { const t = useTranslate(); const globalStore = useGlobalStore(); const systemStatus = globalStore.state.systemStatus; const [state] = useState({ disablePasswordLogin: systemStatus.disablePasswordLogin, }); const [identityProviderList, setIdentityProviderList] = useState([]); useEffect(() => { fetchIdentityProviderList(); }, []); const fetchIdentityProviderList = async () => { const { data: identityProviderList } = await api.getIdentityProviderList(); setIdentityProviderList(identityProviderList); }; const handleDeleteIdentityProvider = async (identityProvider: IdentityProvider) => { let content = t("setting.sso-section.confirm-delete", { name: identityProvider.name }); if (state.disablePasswordLogin) { content += "\n\n" + t("setting.sso-section.disabled-password-login-warning"); } showCommonDialog({ title: t("setting.sso-section.delete-sso"), content: content, style: "danger", dialogName: "delete-identity-provider-dialog", onConfirm: async () => { try { await api.deleteIdentityProvider(identityProvider.id); } catch (error: any) { console.error(error); toast.error(error.response.data.message); } await fetchIdentityProviderList(); }, }); }; return (
{t("setting.sso-section.sso-list")}
{identityProviderList.map((identityProvider) => (

{identityProvider.name} ({identityProvider.type})

} />
))}

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

Configuring Keycloak for Authentication
); }; export default SSOSection;