import { faCheck, faCopy, faKey, faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { format } from "date-fns"; import { OrgPermissionCan } from "@app/components/permissions"; import { Button, IconButton, Tooltip } from "@app/components/v2"; import { OrgPermissionActions, OrgPermissionSubjects } from "@app/context"; import { useTimedReset } from "@app/hooks"; import { useGetIdentityById, useGetIdentityUniversalAuth, useGetIdentityUniversalAuthClientSecrets } from "@app/hooks/api"; import { UsePopUpState } from "@app/hooks/usePopUp"; type Props = { identityId: string; handlePopUpOpen: ( popUpName: keyof UsePopUpState< ["clientSecret", "revokeClientSecret", "universalAuthClientSecret"] >, data?: object ) => void; }; const SHOW_LIMIT = 3; export const IdentityClientSecrets = ({ identityId, handlePopUpOpen }: Props) => { const [copyTextClientId, isCopyingClientId, setCopyTextClientId] = useTimedReset({ initialState: "Copy Client ID to clipboard" }); const { data } = useGetIdentityById(identityId); const { data: identityUniversalAuth } = useGetIdentityUniversalAuth(identityId); const { data: clientSecrets } = useGetIdentityUniversalAuthClientSecrets(identityId); return (

Client ID

{identityUniversalAuth?.clientId ?? ""}

{ navigator.clipboard.writeText(identityUniversalAuth?.clientId ?? ""); setCopyTextClientId("Copied"); }} >
{clientSecrets?.length ? (

{`Client Secrets (${clientSecrets.length})`}

) : (
)} {clientSecrets ?.slice(0, SHOW_LIMIT) .map(({ id, clientSecretTTL, clientSecretPrefix, createdAt }) => { let expiresAt; if (clientSecretTTL > 0) { expiresAt = new Date(new Date(createdAt).getTime() + clientSecretTTL * 1000); } return (

{`${clientSecretPrefix}****`}

{expiresAt ? `Expires on ${format(expiresAt, "yyyy-MM-dd")}` : "No Expiry"}

{ handlePopUpOpen("revokeClientSecret", { clientSecretId: id, clientSecretPrefix }); }} >
); })} {(isAllowed) => { return ( ); }}
); };