import useSWR from 'swr'; import { useTranslation } from 'next-i18next'; import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter/dist/cjs'; import { materialOceanic } from 'react-syntax-highlighter/dist/cjs/styles/prism'; import { fetcher } from '../utils'; import type { SSOTrace } from '../types'; import { Loading, Error, PageHeader, Badge } from '../shared'; import { CopyToClipboardButton } from '../shared/InputWithCopyButton'; const ListItem = ({ term, value }: { term: string; value: string | JSX.Element }) => (
{term}
{value}
); export const SSOTracerInfo = ({ urls }: { urls: { getTracer: string } }) => { const { t } = useTranslation('common'); const { data, isLoading, error } = useSWR<{ data: SSOTrace & { traceId: string } }>( urls.getTracer, fetcher ); if (isLoading) { return ; } if (error) { return ; } if (!data) { return null; } const trace = data.data; const assertionType = trace.context.samlResponse ? 'Response' : trace.context.samlRequest ? 'Request' : '-'; let badgeText = ''; if (trace.context.isOIDCFederated) { if (trace.context.requestedOIDCFlow) { badgeText = t('bui-shared-oidc-federation'); } else { badgeText = t('bui-tracer-oauth2-federation'); } } else if (trace.context.isSAMLFederated) { badgeText = t('bui-tracer-saml-federation'); } else if (trace.context.isIdPFlow) { badgeText = t('bui-tracer-idp-login'); } else if (trace.context.requestedOIDCFlow) { badgeText = t('bui-shared-oidc'); } else { badgeText = t('bui-tracer-oauth2'); } return (
{badgeText} } /> {typeof trace.timestamp === 'number' && ( )} {trace.context.tenant && } {trace.context.product && } {trace.context.relayState && ( )} {trace.context.redirectUri && ( )} {trace.context.clientID && ( )} {trace.context.issuer && } {trace.context.acsUrl && } {trace.context.entityId && ( )} {trace.context.providerName && ( )} {assertionType === 'Response' && trace.context.samlResponse && ( {trace.context.samlResponse} } /> )} {assertionType === 'Request' && trace.context.samlRequest && ( {trace.context.samlRequest} } /> )} {typeof trace.context.profile === 'object' && trace.context.profile && ( {JSON.stringify(trace.context.profile)} } /> )} {trace.context.error_description && ( )} {trace.context.error_uri && ( )} {trace.context.oidcTokenSet?.id_token && ( {trace.context.oidcTokenSet.id_token} } /> )} {trace.context.oidcTokenSet?.access_token && ( {trace.context.oidcTokenSet.access_token} } /> )} {trace.context.stack && ( {trace.context.stack} } /> )} {trace.context.session_state_from_op_error && ( )} {trace.context.scope_from_op_error && ( )}
); };