/* eslint-disable */ // @ts-nocheck import { FormGroup, Switch } from "../../../shared/@patternfly/react-core"; import { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { HelpItem, TextControl } from "../../../shared/keycloak-ui-shared"; import { DefaultSwitchControl } from "../../components/SwitchControl"; import { FixedButtonsGroup } from "../../components/form/FixedButtonGroup"; import { FormAccess } from "../../components/form/FormAccess"; import { useAccess } from "../../context/access/Access"; import { convertAttributeNameToForm } from "../../util"; import { FormFields } from "../ClientDetails"; import type { ClientSettingsProps } from "../ClientSettings"; const validateUrl = (uri: string | undefined, error: string) => ((uri?.startsWith("https://") || uri?.startsWith("http://")) && !uri.includes("*")) || uri === "" || error; export const LogoutPanel = ({ save, reset, client: { access }, }: ClientSettingsProps) => { const { t } = useTranslation(); const { control, watch } = useFormContext(); const { hasAccess } = useAccess(); const isManager = hasAccess("manage-clients") || access?.configure; const protocol = watch("protocol"); const frontchannelLogout = watch("frontchannelLogout"); const frontchannelLogoutTooltip = protocol === "openid-connect" ? "frontchannelLogoutOIDCHelp" : "frontchannelLogoutHelp"; return ( } fieldId="kc-frontchannelLogout" hasNoPaddingTop > ( )} /> {protocol === "openid-connect" && frontchannelLogout && ( ( "attributes.frontchannel.logout.url", )} label={t("frontchannelLogoutUrl")} labelIcon={t("frontchannelLogoutUrlHelp")} rules={{ validate: (uri) => validateUrl(uri, t("frontchannelUrlInvalid")), }} /> )} {protocol === "openid-connect" && frontchannelLogout && ( ( "attributes.frontchannel.logout.session.required", )} defaultValue="true" label={t("frontchannelLogoutSessionRequired")} labelIcon={t("frontchannelLogoutSessionRequiredHelp")} stringify /> )} {protocol === "openid-connect" && !frontchannelLogout && ( <> ( "attributes.backchannel.logout.url", )} label={t("backchannelLogoutUrl")} labelIcon={t("backchannelLogoutUrlHelp")} rules={{ validate: (uri) => validateUrl(uri, t("backchannelUrlInvalid")), }} /> } fieldId="backchannelLogoutSessionRequired" hasNoPaddingTop > ( "attributes.backchannel.logout.session.required", )} defaultValue="false" control={control} render={({ field }) => ( field.onChange(value.toString())} aria-label={t("backchannelLogoutSessionRequired")} /> )} /> } fieldId="backchannelLogoutRevokeOfflineSessions" hasNoPaddingTop > ( "attributes.backchannel.logout.revoke.offline.tokens", )} defaultValue="false" control={control} render={({ field }) => ( field.onChange(value.toString())} aria-label={t("backchannelLogoutRevokeOfflineSessions")} /> )} /> )} {protocol === "openid-connect" && ( ( "attributes.logout.confirmation.enabled", )} defaultValue="false" label={t("logoutConfirmation")} labelIcon={t("logoutConfirmationHelp")} stringify /> )} ); };