/* eslint-disable */ // @ts-nocheck import type ClientRepresentation from "@keycloak/keycloak-admin-client/lib/defs/clientRepresentation"; import { Alert, Button, FormGroup, InputGroup, InputGroupItem, Split, SplitItem, } from "../../../shared/@patternfly/react-core"; import { useFormContext, Controller } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { PasswordInput, HelpItem } from "../../../shared/keycloak-ui-shared"; import { useAdminClient } from "../../admin-client"; import { useAlerts } from "../../../shared/keycloak-ui-shared"; import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog"; import { useAccess } from "../../context/access/Access"; import useFormatDate from "../../utils/useFormatDate"; import { CopyToClipboardButton } from "../../components/copy-to-clipboard-button/CopyToClipboardButton"; export type ClientSecretProps = { client: ClientRepresentation; secret: string; toggle: () => void; refresh: () => void; }; type SecretInputProps = ClientSecretProps & { id: string; buttonLabel: string; isReadOnly?: boolean; }; const SecretInput = ({ id, buttonLabel, client, secret, toggle, isReadOnly = false, }: SecretInputProps) => { const { t } = useTranslation(); const form = useFormContext(); const { hasAccess } = useAccess(); const isManager = hasAccess("manage-clients") || client.access?.configure; return ( {isReadOnly ? ( ) : ( ( )} /> )} ); }; const ExpireDateFormatter = ({ time }: { time: number }) => { const { t } = useTranslation(); const formatDate = useFormatDate(); const unixTimeToString = (time: number) => time ? t("secretExpiresOn", { time: formatDate(new Date(time * 1000), { dateStyle: "full", timeStyle: "long", }), }) : undefined; return
{unixTimeToString(time)}
; }; export const ClientSecret = ({ client, secret, toggle, refresh, }: ClientSecretProps) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { addAlert, addError } = useAlerts(); const secretRotated = client.attributes?.["client.secret.rotated"]; const secretExpirationTime: number = client.attributes?.["client.secret.expiration.time"]; const secretRotatedExpirationTime: number = client.attributes?.["client.secret.rotated.expiration.time"]; const expired = (time: number) => new Date().getTime() >= time * 1000; const [toggleInvalidateConfirm, InvalidateConfirm] = useConfirmDialog({ titleKey: "invalidateRotatedSecret", messageKey: "invalidateRotatedSecretExplain", continueButtonLabel: "confirm", onConfirm: async () => { try { await adminClient.clients.invalidateSecret({ id: client.id!, }); addAlert(t("invalidateRotatedSuccess")); refresh(); } catch (error) { addError("invalidateRotatedError", error); } }, }); return ( <> } > {expired(secretExpirationTime) && ( )} {secretRotated && ( )} ); };