"use client" import { useCallback, useRef } from "react" import { OrgSettingsSection } from "@/components/admin/settings/org-settings-form" import { SettingsCard, SettingsField, SettingsGrid, SettingsToggleRow, } from "@/components/settings/settings-kit" import { IdentityProvidersPanel } from "@/components/admin/settings/sections/identity-providers-section" import { AutomationTabMasonry } from "@/components/gmail/settings/automation/automation-tab-masonry" import { DeployLockedHint, useDeployFieldLocked } from "@/components/admin/settings/deploy-locked-hint" import { useOrgSettingsStore } from "@/lib/admin-settings/org-settings-store" import { Input } from "@/components/ui/input" import { Switch } from "@/components/ui/switch" export function AuthenticationSection() { const authentik = useOrgSettingsStore((s) => s.authentik) const setAuthentik = useOrgSettingsStore((s) => s.setAuthentik) const effective = useOrgSettingsStore((s) => s.meta?.effective.authentik) const enabledLocked = useDeployFieldLocked("authentik", "enabled") const apiLocked = useDeployFieldLocked("authentik", "api_url") const clientLocked = useDeployFieldLocked("authentik", "client_id") const enabled = enabledLocked ? (effective?.enabled ?? authentik.enabled) : authentik.enabled const apiURL = apiLocked ? (effective?.api_url ?? authentik.api_url) : authentik.api_url const clientID = clientLocked ? (effective?.client_id ?? authentik.client_id) : authentik.client_id const identityBeforeSaveRef = useRef<(() => void) | null>(null) const registerIdentityBeforeSave = useCallback((fn: (() => void) | null) => { identityBeforeSaveRef.current = fn }, []) return ( { identityBeforeSaveRef.current?.() }} > : null} action={ setAuthentik({ enabled: v })} /> } > : undefined} > setAuthentik({ api_url: e.target.value })} placeholder="https://auth.example.com/api/v3" /> setAuthentik({ slug: e.target.value })} /> : undefined } > setAuthentik({ client_id: e.target.value })} /> setAuthentik({ default_groups: e.target.value })} /> setAuthentik({ enforce_sso })} /> setAuthentik({ allow_password_fallback }) } /> ) }