"use client"; import { useState } from "react"; import { observer } from "mobx-react-lite"; import Image from "next/image"; import useSWR from "swr"; // ui import { Loader, ToggleSwitch, setPromiseToast } from "@plane/ui"; // components import { AuthenticationMethodCard } from "@/components/authentication"; import { PageHeader } from "@/components/common"; // hooks import { useInstance } from "@/hooks/store"; // icons import OIDCLogo from "/public/logos/oidc-logo.svg"; // plane admin hooks import { useInstanceFlag } from "@/plane-admin/hooks/store/use-instance-flag"; // local components import { InstanceOIDCConfigForm } from "./form"; const InstanceOIDCAuthenticationPage = observer(() => { // state const [isSubmitting, setIsSubmitting] = useState(false); // store const { fetchInstanceConfigurations, formattedConfig, updateInstanceConfigurations } = useInstance(); // plane admin store const isOIDCEnabled = useInstanceFlag("OIDC_SAML_AUTH"); // config const enableOIDCConfig = formattedConfig?.IS_OIDC_ENABLED ?? ""; useSWR("INSTANCE_CONFIGURATIONS", () => fetchInstanceConfigurations()); const updateConfig = async (key: "IS_OIDC_ENABLED", value: string) => { setIsSubmitting(true); const payload = { [key]: value, }; const updateConfigPromise = updateInstanceConfigurations(payload); setPromiseToast(updateConfigPromise, { loading: "Saving Configuration...", success: { title: "Configuration saved", message: () => `OIDC authentication is now ${value ? "active" : "disabled"}.`, }, error: { title: "Error", message: () => "Failed to save configuration", }, }); await updateConfigPromise .then(() => { setIsSubmitting(false); }) .catch((err) => { console.error(err); setIsSubmitting(false); }); }; if (isOIDCEnabled === false) { return (

OpenID Connect (OIDC) authentication is not enabled for this instance.

Activate any of your workspace to get this feature.

); } return ( <>
} config={ { Boolean(parseInt(enableOIDCConfig)) === true ? updateConfig("IS_OIDC_ENABLED", "0") : updateConfig("IS_OIDC_ENABLED", "1"); }} size="sm" disabled={isSubmitting || !formattedConfig} /> } disabled={isSubmitting || !formattedConfig} withBorder={false} />
{formattedConfig ? ( ) : ( )}
); }); export default InstanceOIDCAuthenticationPage;