"use client"; import { useState } from "react"; import { observer } from "mobx-react"; import useSWR from "swr"; import { TInstanceConfigurationKeys } from "@plane/types"; import { Loader, ToggleSwitch, setPromiseToast } from "@plane/ui"; import { PageHeader } from "@/components/common"; // helpers import { cn } from "@/helpers/common.helper"; // hooks import { useInstance } from "@/hooks/store"; // plane admin components import { AuthenticationModes } from "@/plane-admin/components/authentication"; const InstanceAuthenticationPage = observer(() => { // store const { fetchInstanceConfigurations, formattedConfig, updateInstanceConfigurations } = useInstance(); useSWR("INSTANCE_CONFIGURATIONS", () => fetchInstanceConfigurations()); // state const [isSubmitting, setIsSubmitting] = useState(false); // derived values const enableSignUpConfig = formattedConfig?.ENABLE_SIGNUP ?? ""; const updateConfig = async (key: TInstanceConfigurationKeys, value: string) => { setIsSubmitting(true); const payload = { [key]: value, }; const updateConfigPromise = updateInstanceConfigurations(payload); setPromiseToast(updateConfigPromise, { loading: "Saving Configuration...", success: { title: "Success", message: () => "Configuration saved successfully", }, error: { title: "Error", message: () => "Failed to save configuration", }, }); await updateConfigPromise .then(() => { setIsSubmitting(false); }) .catch((err) => { console.error(err); setIsSubmitting(false); }); }; return ( <>
Manage authentication for your instance
Configure authentication modes for your team and restrict sign ups to be invite only.
{formattedConfig ? (
Sign-up configuration
Allow anyone to sign up without invite
Toggling this off will disable self sign ups.
{ Boolean(parseInt(enableSignUpConfig)) === true ? updateConfig("ENABLE_SIGNUP", "0") : updateConfig("ENABLE_SIGNUP", "1"); }} size="sm" disabled={isSubmitting} />
Authentication modes
) : ( )}
); }); export default InstanceAuthenticationPage;