All Downloads are FREE. Search and download functionalities are using the official Maven repository.

theme.keycloak.v2.admin.resources.assets.ClientDetails-17c6a8ba.js.map Maven / Gradle / Ivy

There is a newer version: 25.0.1
Show newest version
{"version":3,"file":"ClientDetails-17c6a8ba.js","sources":["../../../../node_modules/.pnpm/@[email protected]/node_modules/@patternfly/react-styles/css/components/CodeBlock/code-block.mjs","../../../../node_modules/.pnpm/@[email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/CodeBlock/CodeBlock.js","../../../../node_modules/.pnpm/@[email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/CodeBlock/CodeBlockAction.js","../../../../node_modules/.pnpm/@[email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/Panel/PanelHeader.js","../../../../node_modules/.pnpm/@[email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/Text/TextList.js","../../../../node_modules/.pnpm/@[email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/Text/TextListItem.js","../../src/components/download-dialog/DownloadDialog.tsx","../../src/clients/advanced/TokenLifespan.tsx","../../src/clients/advanced/AdvancedSettings.tsx","../../src/clients/advanced/AuthenticationOverrides.tsx","../../src/components/time-selector/TimeSelectorForm.tsx","../../src/clients/advanced/AddHostDialog.tsx","../../src/clients/advanced/ClusteringPanel.tsx","../../src/clients/advanced/ApplicationUrls.tsx","../../src/clients/advanced/FineGrainOpenIdConnect.tsx","../../src/clients/advanced/FineGrainSamlEndpointConfig.tsx","../../src/clients/advanced/OpenIdConnectCompatibilityModes.tsx","../../src/clients/advanced/RevocationPanel.tsx","../../src/clients/AdvancedTab.tsx","../../src/clients/ClientSessions.tsx","../../src/clients/add/SamlConfig.tsx","../../src/clients/add/SamlSignature.tsx","../../src/clients/add/AccessSettings.tsx","../../src/clients/add/LoginSettingsPanel.tsx","../../src/clients/add/LogoutPanel.tsx","../../src/clients/ClientSettings.tsx","../../src/clients/authorization/KeyBasedAttributeInput.tsx","../../src/clients/authorization/AuthorizationDataModal.tsx","../../src/clients/authorization/AuthorizationEvaluateResourcePolicies.tsx","../../src/clients/authorization/AuthorizationEvaluateResource.tsx","../../src/clients/authorization/evaluate/Results.tsx","../../src/clients/authorization/AuthorizationEvaluate.tsx","../../src/clients/authorization/AuthorizationExport.tsx","../../src/clients/authorization/DetailDescription.tsx","../../src/clients/authorization/EmptyPermissionsState.tsx","../../src/clients/authorization/MoreLabel.tsx","../../src/clients/authorization/SearchDropdown.tsx","../../src/clients/authorization/Permissions.tsx","../../src/clients/authorization/NewPolicyDialog.tsx","../../src/clients/authorization/Policies.tsx","../../src/clients/authorization/DetailCell.tsx","../../src/clients/authorization/Resources.tsx","../../src/clients/authorization/Scopes.tsx","../../src/clients/authorization/ImportDialog.tsx","../../src/clients/authorization/Settings.tsx","../../src/clients/scopes/CopyToClipboardButton.tsx","../../src/clients/credentials/ClientSecret.tsx","../../src/clients/credentials/SignedJWT.tsx","../../src/clients/credentials/X509.tsx","../../src/clients/credentials/Credentials.tsx","../../src/clients/keys/Certificate.tsx","../../src/clients/keys/StoreSettings.tsx","../../src/clients/keys/GenerateKeyDialog.tsx","../../src/clients/keys/ImportKeyDialog.tsx","../../src/clients/keys/Keys.tsx","../../src/clients/keys/ExportSamlKeyDialog.tsx","../../src/clients/keys/SamlKeysDialog.tsx","../../src/clients/keys/SamlImportKeyDialog.tsx","../../src/clients/keys/SamlKeys.tsx","../../src/clients/scopes/ClientScopes.tsx","../../src/clients/scopes/GeneratedCodeTab.tsx","../../src/clients/scopes/EvaluateScopes.tsx","../../src/clients/service-account/ServiceAccount.tsx","../../src/clients/ClientDetails.tsx"],"sourcesContent":["import './code-block.css';\nexport default {\n  \"codeBlock\": \"pf-c-code-block\",\n  \"codeBlockActions\": \"pf-c-code-block__actions\",\n  \"codeBlockCode\": \"pf-c-code-block__code\",\n  \"codeBlockContent\": \"pf-c-code-block__content\",\n  \"codeBlockHeader\": \"pf-c-code-block__header\",\n  \"codeBlockPre\": \"pf-c-code-block__pre\"\n};","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport styles from '@patternfly/react-styles/css/components/CodeBlock/code-block';\nimport { css } from '@patternfly/react-styles';\nexport const CodeBlock = (_a) => {\n    var { children = null, className, actions = null } = _a, props = __rest(_a, [\"children\", \"className\", \"actions\"]);\n    return (React.createElement(\"div\", Object.assign({ className: css(styles.codeBlock, className) }, props),\n        React.createElement(\"div\", { className: css(styles.codeBlockHeader) },\n            React.createElement(\"div\", { className: css(styles.codeBlockActions) }, actions && actions)),\n        React.createElement(\"div\", { className: css(styles.codeBlockContent) }, children)));\n};\nCodeBlock.displayName = 'CodeBlock';\n//# sourceMappingURL=CodeBlock.js.map","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nexport const CodeBlockAction = (_a) => {\n    var { children = null, className } = _a, props = __rest(_a, [\"children\", \"className\"]);\n    return (React.createElement(\"div\", Object.assign({ className: css('pf-c-code-block__actions-item', className) }, props), children));\n};\nCodeBlockAction.displayName = 'CodeBlockAction';\n//# sourceMappingURL=CodeBlockAction.js.map","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport styles from '@patternfly/react-styles/css/components/Panel/panel';\nimport { css } from '@patternfly/react-styles';\nexport const PanelHeader = (_a) => {\n    var { className, children } = _a, props = __rest(_a, [\"className\", \"children\"]);\n    return (React.createElement(\"div\", Object.assign({ className: css(styles.panelHeader, className) }, props), children));\n};\nPanelHeader.displayName = 'PanelHeader';\n//# sourceMappingURL=PanelHeader.js.map","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport styles from '@patternfly/react-styles/css/components/Content/content';\nimport { css } from '@patternfly/react-styles';\nexport var TextListVariants;\n(function (TextListVariants) {\n    TextListVariants[\"ul\"] = \"ul\";\n    TextListVariants[\"ol\"] = \"ol\";\n    TextListVariants[\"dl\"] = \"dl\";\n})(TextListVariants || (TextListVariants = {}));\nexport const TextList = (_a) => {\n    var { children = null, className = '', component = TextListVariants.ul, isPlain = false } = _a, props = __rest(_a, [\"children\", \"className\", \"component\", \"isPlain\"]);\n    const Component = component;\n    return (React.createElement(Component, Object.assign({}, props, { className: css(isPlain && styles.modifiers.plain, className) }), children));\n};\nTextList.displayName = 'TextList';\n//# sourceMappingURL=TextList.js.map","import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport { css } from '@patternfly/react-styles';\nexport var TextListItemVariants;\n(function (TextListItemVariants) {\n    TextListItemVariants[\"li\"] = \"li\";\n    TextListItemVariants[\"dt\"] = \"dt\";\n    TextListItemVariants[\"dd\"] = \"dd\";\n})(TextListItemVariants || (TextListItemVariants = {}));\nexport const TextListItem = (_a) => {\n    var { children = null, className = '', component = TextListItemVariants.li } = _a, props = __rest(_a, [\"children\", \"className\", \"component\"]);\n    const Component = component;\n    return (React.createElement(Component, Object.assign({}, props, { className: css(className) }), children));\n};\nTextListItem.displayName = 'TextListItem';\n//# sourceMappingURL=TextListItem.js.map","import {\n  Form,\n  FormGroup,\n  ModalVariant,\n  Select,\n  SelectOption,\n  SelectVariant,\n  Stack,\n  StackItem,\n} from \"@patternfly/react-core\";\nimport { saveAs } from \"file-saver\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { HelpItem, useHelp } from \"ui-shared\";\nimport { adminClient } from \"../../admin-client\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\nimport { addTrailingSlash, prettyPrintJSON } from \"../../util\";\nimport { getAuthorizationHeaders } from \"../../utils/getAuthorizationHeaders\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport { ConfirmDialogModal } from \"../confirm-dialog/ConfirmDialog\";\nimport { KeycloakTextArea } from \"../keycloak-text-area/KeycloakTextArea\";\n\ntype DownloadDialogProps = {\n  id: string;\n  protocol?: string;\n  open: boolean;\n  toggleDialog: () => void;\n};\n\nexport const DownloadDialog = ({\n  id,\n  open,\n  toggleDialog,\n  protocol = \"openid-connect\",\n}: DownloadDialogProps) => {\n  const { realm } = useRealm();\n  const { t } = useTranslation(\"common\");\n  const { enabled } = useHelp();\n  const serverInfo = useServerInfo();\n\n  const configFormats = serverInfo.clientInstallations![protocol];\n  const [selected, setSelected] = useState(\n    configFormats[configFormats.length - 1].id,\n  );\n  const [snippet, setSnippet] = useState();\n  const [openType, setOpenType] = useState(false);\n\n  const selectedConfig = useMemo(\n    () => configFormats.find((config) => config.id === selected) ?? null,\n    [selected],\n  );\n\n  const sanitizeSnippet = (snippet: string) =>\n    snippet.replace(\n      /.*<\\/PrivateKeyPem>/gs,\n      `${t(\"clients:privateKeyMask\")}`,\n    );\n\n  useFetch(\n    async () => {\n      if (selectedConfig?.mediaType === \"application/zip\") {\n        const response = await fetch(\n          `${addTrailingSlash(\n            adminClient.baseUrl,\n          )}admin/realms/${realm}/clients/${id}/installation/providers/${selected}`,\n          {\n            method: \"GET\",\n            headers: getAuthorizationHeaders(\n              await adminClient.getAccessToken(),\n            ),\n          },\n        );\n\n        return response.arrayBuffer();\n      } else {\n        const snippet = await adminClient.clients.getInstallationProviders({\n          id,\n          providerId: selected,\n        });\n        if (typeof snippet === \"string\") {\n          return sanitizeSnippet(snippet);\n        } else {\n          return prettyPrintJSON(snippet);\n        }\n      }\n    },\n    (snippet) => setSnippet(snippet),\n    [id, selected],\n  );\n\n  // Clear snippet when selected config changes, this prevents old snippets from being displayed during fetch.\n  useEffect(() => setSnippet(\"\"), [id, selected]);\n\n  return (\n     {\n        saveAs(\n          new Blob([snippet!], { type: selectedConfig?.mediaType }),\n          selectedConfig?.filename,\n        );\n      }}\n      open={open}\n      toggleDialog={toggleDialog}\n      variant={ModalVariant.medium}\n    >\n      
\n \n \n \n }\n >\n setOpenType(isExpanded)}\n variant={SelectVariant.single}\n value={selected}\n selections={selected}\n onSelect={(_, value) => {\n setSelected(value.toString());\n setOpenType(false);\n }}\n aria-label=\"Select Input\"\n menuAppendTo={() => document.body}\n >\n {configFormats.map((configFormat) => (\n \n {configFormat.displayType}\n \n ))}\n \n \n \n {!selectedConfig?.downloadOnly && (\n \n \n }\n >\n \n \n \n )}\n \n
\n \n );\n};\n","import {\n FormGroup,\n Select,\n SelectOption,\n SelectVariant,\n Split,\n SplitItem,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { HelpItem } from \"ui-shared\";\nimport {\n TimeSelector,\n Unit,\n} from \"../../components/time-selector/TimeSelector\";\n\ntype TokenLifespanProps = {\n id: string;\n name: string;\n defaultValue?: number;\n units?: Unit[];\n};\n\nconst inherited = \"tokenLifespan.inherited\";\nconst expires = \"tokenLifespan.expires\";\n\nexport const TokenLifespan = ({\n id,\n name,\n defaultValue,\n units,\n}: TokenLifespanProps) => {\n const { t } = useTranslation(\"clients\");\n const [open, setOpen] = useState(false);\n\n const [focused, setFocused] = useState(false);\n const onFocus = () => setFocused(true);\n const onBlur = () => setFocused(false);\n\n const { control } = useFormContext();\n const isExpireSet = (value: string | number) =>\n typeof value === \"number\" ||\n (typeof value === \"string\" && value !== \"\") ||\n focused;\n\n return (\n \n }\n >\n (\n \n \n {\n field.onChange(value);\n setOpen(false);\n }}\n selections={[\n isExpireSet(field.value) ? t(expires) : t(inherited),\n ]}\n >\n {t(inherited)}\n {t(expires)}\n \n \n \n \n \n \n )}\n />\n \n );\n};\n","import RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport {\n ActionGroup,\n Button,\n FormGroup,\n Select,\n SelectOption,\n SelectVariant,\n Switch,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { KeyValueInput } from \"../../components/key-value-form/KeyValueInput\";\nimport { MultiLineInput } from \"../../components/multi-line-input/MultiLineInput\";\nimport { TimeSelector } from \"../../components/time-selector/TimeSelector\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { convertAttributeNameToForm } from \"../../util\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport { FormFields } from \"../ClientDetails\";\nimport { TokenLifespan } from \"./TokenLifespan\";\n\ntype AdvancedSettingsProps = {\n save: () => void;\n reset: () => void;\n protocol?: string;\n hasConfigureAccess?: boolean;\n};\n\nexport const AdvancedSettings = ({\n save,\n reset,\n protocol,\n hasConfigureAccess,\n}: AdvancedSettingsProps) => {\n const { t } = useTranslation(\"clients\");\n const [open, setOpen] = useState(false);\n\n const [realm, setRealm] = useState();\n const { realm: realmName } = useRealm();\n\n useFetch(\n () => adminClient.realms.findOne({ realm: realmName }),\n setRealm,\n [],\n );\n\n const { control } = useFormContext();\n return (\n \n {protocol !== \"openid-connect\" && (\n \n }\n >\n (\n \"attributes.saml.assertion.lifespan\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n \n )}\n />\n \n )}\n {protocol === \"openid-connect\" && (\n <>\n \n\n \n\n \n\n \n\n \n\n \n }\n >\n (\n \"attributes.tls.client.certificate.bound.access.tokens\",\n )}\n defaultValue={false}\n control={control}\n render={({ field }) => (\n field.onChange(\"\" + value)}\n aria-label={t(\"oAuthMutual\")}\n />\n )}\n />\n \n \n }\n >\n (\n \"attributes.pkce.code.challenge.method\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setOpen(false);\n }}\n selections={[field.value || t(\"common:choose\")]}\n >\n {[\"\", \"S256\", \"plain\"].map((v) => (\n \n {v || t(\"common:choose\")}\n \n ))}\n \n )}\n />\n \n \n }\n >\n (\n \"attributes.require.pushed.authorization.requests\",\n )}\n defaultValue=\"false\"\n control={control}\n render={({ field }) => (\n field.onChange(value.toString())}\n aria-label={t(\"pushedAuthorizationRequestRequired\")}\n />\n )}\n />\n \n \n }\n >\n \n \n \n }\n >\n \n \n \n )}\n \n \n {t(\"common:save\")}\n \n \n \n \n );\n};\n","import {\n ActionGroup,\n Button,\n FormGroup,\n Select,\n SelectOption,\n SelectVariant,\n} from \"@patternfly/react-core\";\nimport { sortBy } from \"lodash-es\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useFetch } from \"../../utils/useFetch\";\n\ntype AuthenticationOverridesProps = {\n save: () => void;\n reset: () => void;\n protocol?: string;\n hasConfigureAccess?: boolean;\n};\n\nexport const AuthenticationOverrides = ({\n protocol,\n save,\n reset,\n hasConfigureAccess,\n}: AuthenticationOverridesProps) => {\n const { t } = useTranslation(\"clients\");\n const [flows, setFlows] = useState([]);\n const [browserFlowOpen, setBrowserFlowOpen] = useState(false);\n const [directGrantOpen, setDirectGrantOpen] = useState(false);\n\n const { control } = useFormContext();\n\n useFetch(\n () => adminClient.authenticationManagement.getFlows(),\n (flows) => {\n let filteredFlows = [\n ...flows.filter((flow) => flow.providerId !== \"client-flow\"),\n ];\n filteredFlows = sortBy(filteredFlows, [(f) => f.alias]);\n setFlows([\n \n {t(\"common:choose\")}\n ,\n ...filteredFlows.map((flow) => (\n \n {flow.alias}\n \n )),\n ]);\n },\n [],\n );\n\n return (\n \n \n }\n >\n (\n {\n field.onChange(value);\n setBrowserFlowOpen(false);\n }}\n selections={[field.value]}\n >\n {flows}\n \n )}\n />\n \n {protocol === \"openid-connect\" && (\n \n }\n >\n (\n {\n field.onChange(value);\n setDirectGrantOpen(false);\n }}\n selections={[field.value]}\n >\n {flows}\n \n )}\n />\n \n )}\n \n \n {t(\"common:save\")}\n \n \n {t(\"common:revert\")}\n \n \n \n );\n};\n","import { useController } from \"react-hook-form\";\nimport { TimeSelector, TimeSelectorProps } from \"./TimeSelector\";\n\ntype TimeSelectorFormProps = TimeSelectorProps & {\n name: string;\n};\n\nexport const TimeSelectorForm = (props: TimeSelectorFormProps) => {\n const { field } = useController(props);\n\n return ;\n};\n","import {\n AlertVariant,\n Button,\n ButtonVariant,\n Form,\n FormGroup,\n Modal,\n} from \"@patternfly/react-core\";\nimport { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { KeycloakTextInput } from \"../../components/keycloak-text-input/KeycloakTextInput\";\n\ntype FormFields = {\n node: string;\n};\n\ntype AddHostDialogProps = {\n clientId: string;\n isOpen: boolean;\n onAdded: (host: string) => void;\n onClose: () => void;\n};\n\nexport const AddHostDialog = ({\n clientId: id,\n isOpen,\n onAdded,\n onClose,\n}: AddHostDialogProps) => {\n const { t } = useTranslation(\"clients\");\n const {\n register,\n handleSubmit,\n formState: { isDirty, isValid },\n } = useForm();\n const { addAlert, addError } = useAlerts();\n\n async function onSubmit({ node }: FormFields) {\n try {\n await adminClient.clients.addClusterNode({\n id,\n node,\n });\n onAdded(node);\n addAlert(t(\"addedNodeSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"clients:addedNodeFail\", error);\n }\n\n onClose();\n }\n\n return (\n \n {t(\"common:save\")}\n ,\n \n {t(\"common:cancel\")}\n ,\n ]}\n >\n
\n \n \n \n
\n \n );\n};\n","import {\n AlertVariant,\n Button,\n ButtonVariant,\n ExpandableSection,\n FormGroup,\n Split,\n SplitItem,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { ListEmptyState } from \"../../components/list-empty-state/ListEmptyState\";\nimport {\n Action,\n KeycloakDataTable,\n} from \"../../components/table-toolbar/KeycloakDataTable\";\nimport { TimeSelectorForm } from \"../../components/time-selector/TimeSelectorForm\";\nimport useFormatDate, { FORMAT_DATE_AND_TIME } from \"../../utils/useFormatDate\";\nimport { AddHostDialog } from \".././advanced/AddHostDialog\";\nimport { AdvancedProps, parseResult } from \"../AdvancedTab\";\n\ntype Node = {\n host: string;\n registration: string;\n};\n\nexport const ClusteringPanel = ({\n save,\n client: { id, registeredNodes, access },\n}: AdvancedProps) => {\n const { t } = useTranslation(\"clients\");\n const { addAlert, addError } = useAlerts();\n const formatDate = useFormatDate();\n\n const [nodes, setNodes] = useState(registeredNodes || {});\n const [expanded, setExpanded] = useState(false);\n const [selectedNode, setSelectedNode] = useState(\"\");\n const [addNodeOpen, setAddNodeOpen] = useState(false);\n const [key, setKey] = useState(0);\n const refresh = () => setKey(new Date().getTime());\n\n const testCluster = async () => {\n const result = await adminClient.clients.testNodesAvailable({ id: id! });\n parseResult(result, \"testCluster\", addAlert, t);\n };\n\n const [toggleDeleteNodeConfirm, DeleteNodeConfirm] = useConfirmDialog({\n titleKey: \"clients:deleteNode\",\n messageKey: t(\"deleteNodeBody\", {\n node: selectedNode,\n }),\n continueButtonLabel: \"common:delete\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n await adminClient.clients.deleteClusterNode({\n id: id!,\n node: selectedNode,\n });\n setNodes({\n ...Object.keys(nodes).reduce((object: any, key) => {\n if (key !== selectedNode) {\n object[key] = nodes[key];\n }\n return object;\n }, {}),\n });\n refresh();\n addAlert(t(\"deleteNodeSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"clients:deleteNodeFail\", error);\n }\n },\n });\n\n return (\n <>\n \n \n }\n >\n \n \n \n \n \n \n \n \n \n \n <>\n \n {\n nodes[node] = Date.now() / 1000;\n refresh();\n }}\n onClose={() => setAddNodeOpen(false)}\n />\n \n \n Promise.resolve(\n Object.entries(nodes || {}).map((entry) => {\n return { host: entry[0], registration: entry[1] };\n }),\n )\n }\n toolbarItem={\n <>\n \n \n {t(\"testClusterAvailability\")}\n \n \n \n setAddNodeOpen(true)}\n variant={ButtonVariant.tertiary}\n >\n {t(\"registerNodeManually\")}\n \n \n \n }\n actions={[\n {\n title: t(\"common:delete\"),\n onRowClick: (node) => {\n setSelectedNode(node.host);\n toggleDeleteNodeConfirm();\n },\n } as Action,\n ]}\n columns={[\n {\n name: \"host\",\n displayKey: \"clients:nodeHost\",\n },\n {\n name: \"registration\",\n displayKey: \"clients:lastRegistration\",\n cellFormatters: [\n (value) =>\n value\n ? formatDate(\n new Date(parseInt(value.toString()) * 1000),\n FORMAT_DATE_AND_TIME,\n )\n : \"\",\n ],\n },\n ]}\n emptyState={\n setAddNodeOpen(true)}\n />\n }\n />\n \n \n \n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { TextControl } from \"ui-shared\";\n\ntype ApplicationUrlsProps = {\n isDisabled?: boolean;\n};\n\nexport const ApplicationUrls = (props: ApplicationUrlsProps) => {\n const { t } = useTranslation(\"clients\");\n\n return (\n <>\n \n \n \n \n );\n};\n","import {\n ActionGroup,\n Button,\n FormGroup,\n Select,\n SelectOption,\n SelectVariant,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { HelpItem } from \"ui-shared\";\nimport { MultiLineInput } from \"../../components/multi-line-input/MultiLineInput\";\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\nimport { convertAttributeNameToForm, sortProviders } from \"../../util\";\nimport { FormFields } from \"../ClientDetails\";\nimport { ApplicationUrls } from \"./ApplicationUrls\";\n\ntype FineGrainOpenIdConnectProps = {\n save: () => void;\n reset: () => void;\n hasConfigureAccess?: boolean;\n};\n\nexport const FineGrainOpenIdConnect = ({\n save,\n reset,\n hasConfigureAccess,\n}: FineGrainOpenIdConnectProps) => {\n const { t } = useTranslation(\"clients\");\n const providers = useServerInfo().providers;\n const clientSignatureProviders = providers?.clientSignature.providers;\n const contentEncryptionProviders = providers?.contentencryption.providers;\n const cekManagementProviders = providers?.cekmanagement.providers;\n const signatureProviders = providers?.signature.providers;\n const [accessTokenOpen, setAccessTokenOpen] = useState(false);\n const [idTokenOpen, setIdTokenOpen] = useState(false);\n const [idTokenKeyManagementOpen, setIdTokenKeyManagementOpen] =\n useState(false);\n const [idTokenContentOpen, setIdTokenContentOpen] = useState(false);\n const [userInfoSignedResponseOpen, setUserInfoSignedResponseOpen] =\n useState(false);\n const [requestObjectSignatureOpen, setRequestObjectSignatureOpen] =\n useState(false);\n const [requestObjectRequiredOpen, setRequestObjectRequiredOpen] =\n useState(false);\n const [requestObjectEncryptionOpen, setRequestObjectEncryptionOpen] =\n useState(false);\n const [requestObjectEncodingOpen, setRequestObjectEncodingOpen] =\n useState(false);\n const [authorizationSignedOpen, setAuthorizationSignedOpen] = useState(false);\n const [authorizationEncryptedOpen, setAuthorizationEncryptedOpen] =\n useState(false);\n const [\n authorizationEncryptedResponseOpen,\n setAuthorizationEncryptedResponseOpen,\n ] = useState(false);\n\n const [\n userInfoResponseEncryptionKeyManagementOpen,\n setUserInfoResponseEncryptionKeyManagementOpen,\n ] = useState(false);\n\n const [\n userInfoResponseEncryptionContentEncryptionOpen,\n setUserInfoResponseEncryptionContentEncryptionOpen,\n ] = useState(false);\n\n const { control } = useFormContext();\n\n const keyOptions = [\n \n {t(\"common:choose\")}\n ,\n ...sortProviders(clientSignatureProviders!).map((p) => (\n \n )),\n ];\n const cekManagementOptions = [\n \n {t(\"common:choose\")}\n ,\n ...sortProviders(cekManagementProviders!).map((p) => (\n \n )),\n ];\n const signatureOptions = [\n \n {t(\"unsigned\")}\n ,\n ...sortProviders(signatureProviders!).map((p) => (\n \n )),\n ];\n const contentOptions = [\n \n {t(\"common:choose\")}\n ,\n ...sortProviders(contentEncryptionProviders!).map((p) => (\n \n )),\n ];\n\n const requestObjectOptions = [\n \n {t(\"common:any\")}\n ,\n \n {t(\"common:none\")}\n ,\n ...sortProviders(clientSignatureProviders!).map((p) => (\n \n )),\n ];\n\n const requestObjectEncryptionOptions = [\n \n {t(\"common:any\")}\n ,\n ...sortProviders(cekManagementProviders!).map((p) => (\n \n )),\n ];\n\n const requestObjectEncodingOptions = [\n \n {t(\"common:any\")}\n ,\n ...sortProviders(contentEncryptionProviders!).map((p) => (\n \n )),\n ];\n\n const authorizationSignedResponseOptions = [\n \n {t(\"common:choose\")}\n ,\n ...sortProviders(signatureProviders!).map((p) => (\n \n )),\n ];\n\n const requestObjectRequiredOptions = [\n \"not required\",\n \"request or request_uri\",\n \"request only\",\n \"request_uri only\",\n ].map((p) => (\n \n {t(`requestObject.${p}`)}\n \n ));\n\n return (\n \n \n \n }\n >\n (\n \"attributes.access.token.signed.response.alg\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setAccessTokenOpen(false);\n }}\n selections={field.value}\n >\n {keyOptions}\n \n )}\n />\n \n \n }\n >\n (\n \"attributes.id.token.signed.response.alg\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setIdTokenOpen(false);\n }}\n selections={field.value}\n >\n {keyOptions}\n \n )}\n />\n \n \n }\n >\n (\n \"attributes.id.token.encrypted.response.alg\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setIdTokenKeyManagementOpen(false);\n }}\n selections={field.value}\n >\n {cekManagementOptions}\n \n )}\n />\n \n \n }\n >\n (\n \"attributes.id.token.encrypted.response.enc\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setIdTokenContentOpen(false);\n }}\n selections={field.value}\n >\n {contentOptions}\n \n )}\n />\n \n \n }\n >\n (\n \"attributes.user.info.response.signature.alg\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setUserInfoSignedResponseOpen(false);\n }}\n selections={field.value}\n >\n {signatureOptions}\n \n )}\n />\n \n \n }\n >\n (\n \"attributes.user.info.encrypted.response.alg\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setUserInfoResponseEncryptionKeyManagementOpen(false);\n }}\n selections={field.value}\n >\n {cekManagementOptions}\n \n )}\n />\n \n \n }\n >\n (\n \"attributes.user.info.encrypted.response.enc\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setUserInfoResponseEncryptionContentEncryptionOpen(false);\n }}\n selections={field.value}\n >\n {contentOptions}\n \n )}\n />\n \n \n }\n >\n (\n \"attributes.request.object.signature.alg\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setRequestObjectSignatureOpen(false);\n }}\n selections={field.value}\n >\n {requestObjectOptions}\n \n )}\n />\n \n \n }\n >\n (\n \"attributes.request.object.encryption.alg\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setRequestObjectEncryptionOpen(false);\n }}\n selections={field.value}\n >\n {requestObjectEncryptionOptions}\n \n )}\n />\n \n \n }\n >\n (\n \"attributes.request.object.encryption.enc\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setRequestObjectEncodingOpen(false);\n }}\n selections={field.value}\n >\n {requestObjectEncodingOptions}\n \n )}\n />\n \n \n }\n >\n (\n \"attributes.request.object.required\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setRequestObjectRequiredOpen(false);\n }}\n selections={field.value}\n >\n {requestObjectRequiredOptions}\n \n )}\n />\n \n \n }\n >\n \n \n \n }\n >\n (\n \"attributes.authorization.signed.response.alg\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setAuthorizationSignedOpen(false);\n }}\n selections={field.value}\n >\n {authorizationSignedResponseOptions}\n \n )}\n />\n \n \n }\n >\n (\n \"attributes.authorization.encrypted.response.alg\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setAuthorizationEncryptedOpen(false);\n }}\n selections={field.value}\n >\n {cekManagementOptions}\n \n )}\n />\n \n \n }\n >\n (\n \"attributes.authorization.encrypted.response.enc\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value);\n setAuthorizationEncryptedResponseOpen(false);\n }}\n selections={field.value}\n >\n {contentOptions}\n \n )}\n />\n \n \n \n \n \n \n );\n};\n","import { ActionGroup, Button } from \"@patternfly/react-core\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { TextControl } from \"ui-shared\";\nimport { ApplicationUrls } from \"./ApplicationUrls\";\n\ntype FineGrainSamlEndpointConfigProps = {\n save: () => void;\n reset: () => void;\n};\n\nexport const FineGrainSamlEndpointConfig = ({\n save,\n reset,\n}: FineGrainSamlEndpointConfigProps) => {\n const { t } = useTranslation(\"clients\");\n return (\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n );\n};\n","import { ActionGroup, Button, FormGroup, Switch } from \"@patternfly/react-core\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { HelpItem } from \"ui-shared\";\nimport { convertAttributeNameToForm } from \"../../util\";\nimport { FormFields } from \"../ClientDetails\";\n\ntype OpenIdConnectCompatibilityModesProps = {\n save: () => void;\n reset: () => void;\n hasConfigureAccess?: boolean;\n};\n\nexport const OpenIdConnectCompatibilityModes = ({\n save,\n reset,\n hasConfigureAccess,\n}: OpenIdConnectCompatibilityModesProps) => {\n const { t } = useTranslation(\"clients\");\n const { control } = useFormContext();\n return (\n \n \n }\n >\n (\n \"attributes.exclude.session.state.from.auth.response\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n field.onChange(value.toString())}\n aria-label={t(\"excludeSessionStateFromAuthenticationResponse\")}\n />\n )}\n />\n \n \n }\n >\n (\n \"attributes.use.refresh.tokens\",\n )}\n defaultValue=\"true\"\n control={control}\n render={({ field }) => (\n field.onChange(value.toString())}\n aria-label={t(\"useRefreshTokens\")}\n />\n )}\n />\n \n \n }\n >\n (\n \"attributes.client_credentials.use_refresh_token\",\n )}\n defaultValue=\"false\"\n control={control}\n render={({ field }) => (\n field.onChange(value.toString())}\n aria-label={t(\"useRefreshTokenForClientCredentialsGrant\")}\n />\n )}\n />\n \n \n }\n >\n (\n \"attributes.token.response.type.bearer.lower-case\",\n )}\n defaultValue=\"false\"\n control={control}\n render={({ field }) => (\n field.onChange(value.toString())}\n aria-label={t(\"useLowerCaseBearerType\")}\n />\n )}\n />\n \n \n \n {t(\"common:save\")}\n \n \n {t(\"common:revert\")}\n \n \n \n );\n};\n","import {\n ActionGroup,\n Button,\n FormGroup,\n InputGroup,\n Text,\n Tooltip,\n} from \"@patternfly/react-core\";\nimport { useEffect, useRef } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { KeycloakTextInput } from \"../../components/keycloak-text-input/KeycloakTextInput\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport useFormatDate, { FORMAT_DATE_AND_TIME } from \"../../utils/useFormatDate\";\nimport { AdvancedProps, parseResult } from \"../AdvancedTab\";\nimport { toClient } from \"../routes/Client\";\n\nexport const RevocationPanel = ({\n save,\n client: { id, adminUrl, access },\n}: AdvancedProps) => {\n const revocationFieldName = \"notBefore\";\n const pushRevocationButtonRef = useRef();\n\n const { t } = useTranslation(\"clients\");\n const { realm } = useRealm();\n const { addAlert } = useAlerts();\n const formatDate = useFormatDate();\n\n const { getValues, setValue, register } = useFormContext();\n\n const setNotBefore = (time: number, messageKey: string) => {\n setValue(revocationFieldName, time);\n save({ messageKey });\n };\n\n useEffect(() => {\n register(revocationFieldName);\n }, [register]);\n\n const getNotBeforeValue = () => {\n const date = getValues(revocationFieldName);\n if (date > 0) {\n return formatDate(new Date(date * 1000), FORMAT_DATE_AND_TIME);\n } else {\n return t(\"common:none\");\n }\n };\n\n const push = async () => {\n const result = await adminClient.clients.pushRevocation({\n id: id!,\n });\n parseResult(result, \"notBeforePush\", addAlert, t);\n };\n\n return (\n <>\n \n \n In order to successfully push setup url on\n \n {t(\"settings\")}\n \n tab\n \n \n \n \n }\n >\n \n \n {\n setNotBefore(Date.now() / 1000, \"notBeforeSetToNow\");\n }}\n >\n {t(\"setToNow\")}\n \n {\n setNotBefore(0, \"notBeforeNowClear\");\n }}\n >\n {t(\"clear\")}\n \n \n \n \n {!adminUrl && (\n \n )}\n \n {t(\"push\")}\n \n \n \n \n );\n};\n","import { AlertVariant, PageSection, Text } from \"@patternfly/react-core\";\nimport type { TFunction } from \"i18next\";\nimport { useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport type ClientRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientRepresentation\";\nimport type GlobalRequestResult from \"@keycloak/keycloak-admin-client/lib/defs/globalRequestResult\";\n\nimport type { AddAlertFunction } from \"../components/alert/Alerts\";\nimport { ScrollForm } from \"../components/scroll-form/ScrollForm\";\nimport { convertAttributeNameToForm, toUpperCase } from \"../util\";\nimport { AdvancedSettings } from \"./advanced/AdvancedSettings\";\nimport { AuthenticationOverrides } from \"./advanced/AuthenticationOverrides\";\nimport { ClusteringPanel } from \"./advanced/ClusteringPanel\";\nimport { FineGrainOpenIdConnect } from \"./advanced/FineGrainOpenIdConnect\";\nimport { FineGrainSamlEndpointConfig } from \"./advanced/FineGrainSamlEndpointConfig\";\nimport { OpenIdConnectCompatibilityModes } from \"./advanced/OpenIdConnectCompatibilityModes\";\nimport { RevocationPanel } from \"./advanced/RevocationPanel\";\nimport type { FormFields, SaveOptions } from \"./ClientDetails\";\n\nexport const parseResult = (\n result: GlobalRequestResult,\n prefixKey: string,\n addAlert: AddAlertFunction,\n t: TFunction,\n) => {\n const successCount = result.successRequests?.length || 0;\n const failedCount = result.failedRequests?.length || 0;\n\n if (successCount === 0 && failedCount === 0) {\n addAlert(t(\"noAdminUrlSet\"), AlertVariant.warning);\n } else if (failedCount > 0) {\n addAlert(\n t(prefixKey + \"Success\", { successNodes: result.successRequests }),\n AlertVariant.success,\n );\n addAlert(\n t(prefixKey + \"Fail\", { failedNodes: result.failedRequests }),\n AlertVariant.danger,\n );\n } else {\n addAlert(\n t(prefixKey + \"Success\", { successNodes: result.successRequests }),\n AlertVariant.success,\n );\n }\n};\n\nexport type AdvancedProps = {\n save: (options?: SaveOptions) => void;\n client: ClientRepresentation;\n};\n\nexport const AdvancedTab = ({ save, client }: AdvancedProps) => {\n const { t } = useTranslation(\"clients\");\n const openIdConnect = \"openid-connect\";\n\n const { setValue } = useFormContext();\n const {\n publicClient,\n attributes,\n protocol,\n authenticationFlowBindingOverrides,\n } = client;\n\n const resetFields = (names: string[]) => {\n for (const name of names) {\n setValue(\n convertAttributeNameToForm(`attributes.${name}`),\n attributes?.[name] || \"\",\n );\n }\n };\n\n return (\n \n ,\n },\n {\n title: t(\"clustering\"),\n isHidden: !publicClient,\n panel: ,\n },\n {\n title: t(\"fineGrainOpenIdConnectConfiguration\"),\n isHidden: protocol !== openIdConnect,\n panel: (\n <>\n \n {t(\"clients-help:fineGrainOpenIdConnectConfiguration\")}\n \n {\n resetFields([\n \"logoUri\",\n \"policyUri\",\n \"tosUri\",\n \"access.token.signed.response.alg\",\n \"id.token.signed.response.alg\",\n \"id.token.encrypted.response.alg\",\n \"id.token.encrypted.response.enc\",\n \"user.info.response.signature.alg\",\n \"user.info.encrypted.response.alg\",\n \"user.info.encrypted.response.enc\",\n \"request.object.signature.alg\",\n \"request.object.encryption.alg\",\n \"request.object.encryption.enc\",\n \"request.object.required\",\n \"request.uris\",\n \"authorization.signed.response.alg\",\n \"authorization.encrypted.response.alg\",\n \"authorization.encrypted.response.enc\",\n ]);\n }}\n />\n \n ),\n },\n {\n title: t(\"openIdConnectCompatibilityModes\"),\n isHidden: protocol !== openIdConnect,\n panel: (\n <>\n \n {t(\"clients-help:openIdConnectCompatibilityModes\")}\n \n save()}\n reset={() =>\n resetFields([\n \"exclude.session.state.from.auth.response\",\n \"use.refresh.tokens\",\n \"client_credentials.use_refresh_token\",\n \"token.response.type.bearer.lower-case\",\n ])\n }\n />\n \n ),\n },\n {\n title: t(\"fineGrainSamlEndpointConfig\"),\n isHidden: protocol === openIdConnect,\n panel: (\n <>\n \n {t(\"clients-help:fineGrainSamlEndpointConfig\")}\n \n save()}\n reset={() =>\n resetFields([\n \"logoUri\",\n \"policyUri\",\n \"tosUri\",\n \"saml_assertion_consumer_url_post\",\n \"saml_assertion_consumer_url_redirect\",\n \"saml_single_logout_service_url_post\",\n \"saml_single_logout_service_url_redirect\",\n \"saml_single_logout_service_url_artifact\",\n \"saml_artifact_binding_url\",\n \"saml_artifact_resolution_service_url\",\n ])\n }\n />\n \n ),\n },\n {\n title: t(\"advancedSettings\"),\n panel: (\n <>\n \n {t(\n \"clients-help:advancedSettings\" +\n toUpperCase(protocol || \"\"),\n )}\n \n save()}\n reset={() => {\n resetFields([\n \"saml.assertion.lifespan\",\n \"access.token.lifespan\",\n \"tls.client.certificate.bound.access.tokens\",\n \"pkce.code.challenge.method\",\n ]);\n }}\n />\n \n ),\n },\n {\n title: t(\"authenticationOverrides\"),\n panel: (\n <>\n \n {t(\"clients-help:authenticationOverrides\")}\n \n save()}\n reset={() => {\n setValue(\n \"authenticationFlowBindingOverrides.browser\",\n authenticationFlowBindingOverrides?.browser,\n );\n setValue(\n \"authenticationFlowBindingOverrides.direct_grant\",\n authenticationFlowBindingOverrides?.direct_grant,\n );\n }}\n />\n \n ),\n },\n ]}\n borders\n />\n \n );\n};\n","import type ClientRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientRepresentation\";\nimport type UserSessionRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userSessionRepresentation\";\nimport { PageSection } from \"@patternfly/react-core\";\nimport { useTranslation } from \"react-i18next\";\nimport { adminClient } from \"../admin-client\";\nimport type { LoaderFunction } from \"../components/table-toolbar/KeycloakDataTable\";\nimport SessionsTable from \"../sessions/SessionsTable\";\n\ntype ClientSessionsProps = {\n client: ClientRepresentation;\n};\n\nexport const ClientSessions = ({ client }: ClientSessionsProps) => {\n const { t } = useTranslation(\"sessions\");\n\n const loader: LoaderFunction = async (\n first,\n max,\n ) => {\n const mapSessionsToType =\n (type: string) => (sessions: UserSessionRepresentation[]) =>\n sessions.map((session) => ({\n type,\n ...session,\n }));\n\n const allSessions = await Promise.all([\n adminClient.clients\n .listSessions({ id: client.id!, first, max })\n .then(mapSessionsToType(t(\"sessions:sessionsType.regularSSO\"))),\n adminClient.clients\n .listOfflineSessions({\n id: client.id!,\n first,\n max,\n })\n .then(mapSessionsToType(t(\"sessions:sessionsType.offline\"))),\n ]);\n\n return allSessions.flat();\n };\n\n return (\n \n \n \n );\n};\n","import {\n FormGroup,\n Select,\n SelectOption,\n SelectVariant,\n Switch,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, Path, PathValue, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { HelpItem } from \"ui-shared\";\nimport { convertAttributeNameToForm } from \"../../util\";\nimport { FormFields } from \"../ClientDetails\";\n\ntype ToggleProps = {\n name: PathValue>;\n label: string;\n};\nexport const Toggle = ({ name, label }: ToggleProps) => {\n const { t } = useTranslation(\"clients\");\n const { control } = useFormContext();\n\n return (\n \n }\n >\n (\n field.onChange(value.toString())}\n aria-label={t(label)}\n />\n )}\n />\n \n );\n};\n\nexport const SamlConfig = () => {\n const { t } = useTranslation(\"clients\");\n const { control } = useFormContext();\n\n const [nameFormatOpen, setNameFormatOpen] = useState(false);\n return (\n \n \n }\n >\n (\n {\n field.onChange(value.toString());\n setNameFormatOpen(false);\n }}\n selections={field.value}\n variant={SelectVariant.single}\n aria-label={t(\"nameIdFormat\")}\n isOpen={nameFormatOpen}\n >\n {[\"username\", \"email\", \"transient\", \"persistent\"].map((name) => (\n \n ))}\n \n )}\n />\n \n \n \n \n \n \n \n \n \n );\n};\n","import {\n FormGroup,\n Select,\n SelectOption,\n SelectVariant,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { HelpItem } from \"ui-shared\";\nimport { convertAttributeNameToForm } from \"../../util\";\nimport { FormFields } from \"../ClientDetails\";\nimport { Toggle } from \"./SamlConfig\";\n\nconst SIGNATURE_ALGORITHMS = [\n \"RSA_SHA1\",\n \"RSA_SHA256\",\n \"RSA_SHA256_MGF1\",\n \"RSA_SHA512\",\n \"RSA_SHA512_MGF1\",\n \"DSA_SHA1\",\n] as const;\n\nconst KEYNAME_TRANSFORMER = [\"NONE\", \"KEY_ID\", \"CERT_SUBJECT\"] as const;\n\nconst CANONICALIZATION = [\n { name: \"EXCLUSIVE\", value: \"http://www.w3.org/2001/10/xml-exc-c14n#\" },\n {\n name: \"EXCLUSIVE_WITH_COMMENTS\",\n value: \"http://www.w3.org/2001/10/xml-exc-c14n#WithComments\",\n },\n {\n name: \"INCLUSIVE\",\n value: \"http://www.w3.org/TR/2001/REC-xml-c14n-20010315\",\n },\n {\n name: \"INCLUSIVE_WITH_COMMENTS\",\n value: \"http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments\",\n },\n] as const;\n\nexport const SamlSignature = () => {\n const { t } = useTranslation(\"clients\");\n const [algOpen, setAlgOpen] = useState(false);\n const [keyOpen, setKeyOpen] = useState(false);\n const [canOpen, setCanOpen] = useState(false);\n\n const { control, watch } = useFormContext();\n\n const signDocs = watch(\n convertAttributeNameToForm(\"attributes.saml.server.signature\"),\n );\n const signAssertion = watch(\n convertAttributeNameToForm(\n \"attributes.saml.assertion.signature\",\n ),\n );\n\n return (\n \n \n \n {(signDocs === \"true\" || signAssertion === \"true\") && (\n <>\n \n }\n >\n (\n \"attributes.saml.signature.algorithm\",\n )}\n defaultValue={SIGNATURE_ALGORITHMS[0]}\n control={control}\n render={({ field }) => (\n {\n field.onChange(value.toString());\n setAlgOpen(false);\n }}\n selections={field.value}\n variant={SelectVariant.single}\n aria-label={t(\"signatureAlgorithm\")}\n isOpen={algOpen}\n >\n {SIGNATURE_ALGORITHMS.map((algorithm) => (\n \n ))}\n \n )}\n />\n \n \n }\n >\n (\n \"attributes.saml.server.signature.keyinfo.xmlSigKeyInfoKeyNameTransformer\",\n )}\n defaultValue={KEYNAME_TRANSFORMER[0]}\n control={control}\n render={({ field }) => (\n {\n field.onChange(value.toString());\n setKeyOpen(false);\n }}\n selections={field.value}\n variant={SelectVariant.single}\n aria-label={t(\"signatureKeyName\")}\n isOpen={keyOpen}\n >\n {KEYNAME_TRANSFORMER.map((key) => (\n \n ))}\n \n )}\n />\n \n \n }\n >\n (\n {\n field.onChange(value.toString());\n setCanOpen(false);\n }}\n selections={\n CANONICALIZATION.find((can) => can.value === field.value)\n ?.name\n }\n variant={SelectVariant.single}\n aria-label={t(\"canonicalization\")}\n isOpen={canOpen}\n >\n {CANONICALIZATION.map((can) => (\n \n {can.name}\n \n ))}\n \n )}\n />\n \n \n )}\n \n );\n};\n","import { FormGroup } from \"@patternfly/react-core\";\nimport { useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { HelpItem } from \"ui-shared\";\nimport { FixedButtonsGroup } from \"../../components/form/FixedButtonGroup\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { KeycloakTextInput } from \"../../components/keycloak-text-input/KeycloakTextInput\";\nimport { useAccess } from \"../../context/access/Access\";\nimport { FormFields } from \"../ClientDetails\";\nimport type { ClientSettingsProps } from \"../ClientSettings\";\nimport { LoginSettings } from \"./LoginSettings\";\n\nexport const AccessSettings = ({\n client,\n save,\n reset,\n}: ClientSettingsProps) => {\n const { t } = useTranslation(\"clients\");\n const { register, watch } = useFormContext();\n\n const { hasAccess } = useAccess();\n const isManager = hasAccess(\"manage-clients\") || client.access?.configure;\n\n const protocol = watch(\"protocol\");\n\n return (\n \n {!client.bearerOnly && }\n {protocol !== \"saml\" && (\n \n }\n >\n \n \n )}\n {client.bearerOnly && (\n \n )}\n \n );\n};\n","import {\n FormGroup,\n Select,\n SelectOption,\n SelectVariant,\n Switch,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { HelpItem } from \"ui-shared\";\nimport { KeycloakTextArea } from \"../../components/keycloak-text-area/KeycloakTextArea\";\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\nimport { convertAttributeNameToForm } from \"../../util\";\nimport { FormFields } from \"../ClientDetails\";\n\nexport const LoginSettingsPanel = ({ access }: { access?: boolean }) => {\n const { t } = useTranslation(\"clients\");\n const { register, control, watch } = useFormContext();\n\n const [loginThemeOpen, setLoginThemeOpen] = useState(false);\n const loginThemes = useServerInfo().themes![\"login\"];\n const consentRequired = watch(\"consentRequired\");\n const displayOnConsentScreen: string = watch(\n convertAttributeNameToForm(\n \"attributes.display.on.consent.screen\",\n ),\n );\n\n return (\n \n \n }\n fieldId=\"loginTheme\"\n >\n (\n {\n field.onChange(value.toString());\n setLoginThemeOpen(false);\n }}\n selections={field.value || t(\"common:choose\")}\n variant={SelectVariant.single}\n aria-label={t(\"loginTheme\")}\n isOpen={loginThemeOpen}\n >\n {[\n \n {t(\"common:choose\")}\n ,\n ...loginThemes.map((theme) => (\n \n )),\n ]}\n \n )}\n />\n \n \n }\n fieldId=\"kc-consent\"\n hasNoPaddingTop\n >\n (\n \n )}\n />\n \n \n }\n fieldId=\"kc-display-on-client\"\n hasNoPaddingTop\n >\n (\n \"attributes.display.on.consent.screen\",\n )}\n defaultValue={false}\n control={control}\n render={({ field }) => (\n field.onChange(\"\" + value)}\n isDisabled={!consentRequired}\n aria-label={t(\"displayOnClient\")}\n />\n )}\n />\n \n \n }\n fieldId=\"kc-consent-screen-text\"\n >\n (\n \"attributes.consent.screen.text\",\n ),\n )}\n isDisabled={!(consentRequired && displayOnConsentScreen === \"true\")}\n />\n \n \n );\n};\n","import { FormGroup, Switch, ValidatedOptions } from \"@patternfly/react-core\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { FixedButtonsGroup } from \"../../components/form/FixedButtonGroup\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { KeycloakTextInput } from \"../../components/keycloak-text-input/KeycloakTextInput\";\nimport { useAccess } from \"../../context/access/Access\";\nimport { beerify, convertAttributeNameToForm } from \"../../util\";\nimport { FormFields } from \"../ClientDetails\";\nimport type { ClientSettingsProps } from \"../ClientSettings\";\n\nconst validateUrl = (uri: string | undefined, error: string) =>\n ((uri?.startsWith(\"https://\") || uri?.startsWith(\"http://\")) &&\n !uri.includes(\"*\")) ||\n uri === \"\" ||\n error;\n\nexport const LogoutPanel = ({\n save,\n reset,\n client: { access },\n}: ClientSettingsProps) => {\n const { t } = useTranslation(\"clients\");\n const {\n register,\n control,\n watch,\n formState: { errors },\n } = useFormContext();\n\n const { hasAccess } = useAccess();\n const isManager = hasAccess(\"manage-clients\") || access?.configure;\n\n const protocol = watch(\"protocol\");\n const frontchannelLogout = watch(\"frontchannelLogout\");\n\n return (\n \n \n }\n fieldId=\"kc-frontchannelLogout\"\n hasNoPaddingTop\n >\n (\n \n )}\n />\n \n {protocol === \"openid-connect\" && frontchannelLogout && (\n \n }\n helperTextInvalid={\n errors.attributes?.[beerify(\"frontchannel.logout.url\")]\n ?.message as string\n }\n validated={\n errors.attributes?.[beerify(\"frontchannel.logout.url\")]?.message\n ? ValidatedOptions.error\n : ValidatedOptions.default\n }\n >\n (\n \"attributes.frontchannel.logout.url\",\n ),\n {\n validate: (uri) =>\n validateUrl(uri, t(\"frontchannelUrlInvalid\").toString()),\n },\n )}\n validated={\n errors.attributes?.[beerify(\"frontchannel.logout.url\")]?.message\n ? ValidatedOptions.error\n : ValidatedOptions.default\n }\n />\n \n )}\n {protocol === \"openid-connect\" && (\n <>\n \n }\n helperTextInvalid={\n errors.attributes?.[beerify(\"backchannel.logout.url\")]\n ?.message as string\n }\n validated={\n errors.attributes?.[beerify(\"backchannel.logout.url\")]?.message\n ? ValidatedOptions.error\n : ValidatedOptions.default\n }\n >\n (\n \"attributes.backchannel.logout.url\",\n ),\n {\n validate: (uri) =>\n validateUrl(uri, t(\"backchannelUrlInvalid\").toString()),\n },\n )}\n validated={\n errors.attributes?.[beerify(\"backchannel.logout.url\")]?.message\n ? ValidatedOptions.error\n : ValidatedOptions.default\n }\n />\n \n \n }\n fieldId=\"backchannelLogoutSessionRequired\"\n hasNoPaddingTop\n >\n (\n \"attributes.backchannel.logout.session.required\",\n )}\n defaultValue=\"true\"\n control={control}\n render={({ field }) => (\n field.onChange(value.toString())}\n aria-label={t(\"backchannelLogoutSessionRequired\")}\n />\n )}\n />\n \n \n }\n fieldId=\"backchannelLogoutRevokeOfflineSessions\"\n hasNoPaddingTop\n >\n (\n \"attributes.backchannel.logout.revoke.offline.tokens\",\n )}\n defaultValue=\"false\"\n control={control}\n render={({ field }) => (\n field.onChange(value.toString())}\n aria-label={t(\"backchannelLogoutRevokeOfflineSessions\")}\n />\n )}\n />\n \n \n )}\n \n \n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { useFormContext } from \"react-hook-form\";\nimport { Form } from \"@patternfly/react-core\";\n\nimport type ClientRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientRepresentation\";\nimport { ScrollForm } from \"../components/scroll-form/ScrollForm\";\nimport { ClientDescription } from \"./ClientDescription\";\nimport { CapabilityConfig } from \"./add/CapabilityConfig\";\nimport { SamlConfig } from \"./add/SamlConfig\";\nimport { SamlSignature } from \"./add/SamlSignature\";\nimport { AccessSettings } from \"./add/AccessSettings\";\nimport { LoginSettingsPanel } from \"./add/LoginSettingsPanel\";\nimport { LogoutPanel } from \"./add/LogoutPanel\";\nimport { FormFields } from \"./ClientDetails\";\n\nexport type ClientSettingsProps = {\n client: ClientRepresentation;\n save: () => void;\n reset: () => void;\n};\n\nexport const ClientSettings = (props: ClientSettingsProps) => {\n const { t } = useTranslation(\"clients\");\n\n const { watch } = useFormContext();\n const protocol = watch(\"protocol\");\n\n const { client } = props;\n\n return (\n \n \n \n ),\n },\n {\n title: t(\"accessSettings\"),\n panel: ,\n },\n {\n title: t(\"samlCapabilityConfig\"),\n isHidden: protocol !== \"saml\" || client.bearerOnly,\n panel: ,\n },\n {\n title: t(\"signatureAndEncryption\"),\n isHidden: protocol !== \"saml\" || client.bearerOnly,\n panel: ,\n },\n {\n title: t(\"capabilityConfig\"),\n isHidden: protocol !== \"openid-connect\" || client.bearerOnly,\n panel: ,\n },\n {\n title: t(\"loginSettings\"),\n isHidden: client.bearerOnly,\n panel: ,\n },\n {\n title: t(\"logoutSettings\"),\n isHidden: client.bearerOnly,\n panel: ,\n },\n ]}\n />\n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Controller, useFieldArray, useFormContext } from \"react-hook-form\";\nimport {\n Button,\n Select,\n SelectOption,\n SelectVariant,\n} from \"@patternfly/react-core\";\nimport {\n TableComposable,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n} from \"@patternfly/react-table\";\nimport { MinusCircleIcon, PlusCircleIcon } from \"@patternfly/react-icons\";\nimport { camelCase } from \"lodash-es\";\n\nimport type ResourceRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceRepresentation\";\nimport { defaultContextAttributes } from \"../utils\";\nimport { KeycloakTextInput } from \"../../components/keycloak-text-input/KeycloakTextInput\";\n\nimport \"./key-based-attribute-input.css\";\n\nexport type AttributeType = {\n key?: string;\n name: string;\n custom?: boolean;\n values?: {\n [key: string]: string;\n }[];\n};\n\ntype AttributeInputProps = {\n name: string;\n selectableValues?: AttributeType[];\n resources?: ResourceRepresentation[];\n};\n\ntype ValueInputProps = {\n name: string;\n rowIndex: number;\n attribute: any;\n selectableValues?: AttributeType[];\n resources?: ResourceRepresentation[];\n};\n\nconst ValueInput = ({\n name,\n rowIndex,\n attribute,\n selectableValues,\n resources,\n}: ValueInputProps) => {\n const { t } = useTranslation(\"common\");\n const { control, register, getValues } = useFormContext();\n const [isValueOpenArray, setIsValueOpenArray] = useState([false]);\n\n const toggleValueSelect = (rowIndex: number, open: boolean) => {\n const arr = [...isValueOpenArray];\n arr[rowIndex] = open;\n setIsValueOpenArray(arr);\n };\n\n const attributeValues = useMemo(() => {\n let values: AttributeType[] | undefined = [];\n\n if (selectableValues) {\n values = defaultContextAttributes.find(\n (attr) => attr.key === getValues().context?.[rowIndex]?.key,\n )?.values;\n }\n\n return values;\n }, [getValues]);\n\n const renderSelectOptionType = () => {\n const scopeValues = resources?.find(\n (resource) => resource.name === getValues().resources?.[rowIndex]?.key,\n )?.scopes;\n\n if (attributeValues?.length && !resources) {\n return attributeValues.map((attr) => (\n \n {attr.name}\n \n ));\n } else if (scopeValues?.length) {\n return scopeValues.map((scope) => (\n \n {scope.name}\n \n ));\n }\n };\n\n const getMessageBundleKey = (attributeName: string) =>\n camelCase(attributeName).replace(/\\W/g, \"\");\n\n return (\n \n {resources || attributeValues?.length ? (\n (\n toggleValueSelect(rowIndex, open)}\n isOpen={isValueOpenArray[rowIndex]}\n variant={SelectVariant.typeahead}\n typeAheadAriaLabel={t(\"clients:selectOrTypeAKey\")}\n placeholderText={t(\"clients:selectOrTypeAKey\")}\n selections={field.value}\n onSelect={(_, v) => {\n field.onChange(v);\n\n toggleValueSelect(rowIndex, false);\n }}\n >\n {renderSelectOptionType()}\n \n )}\n />\n ) : (\n \n )}\n \n );\n};\n\nexport const KeyBasedAttributeInput = ({\n name,\n selectableValues,\n resources,\n}: AttributeInputProps) => {\n const { t } = useTranslation(\"common\");\n const { control, watch } = useFormContext();\n const { fields, append, remove } = useFieldArray({\n control: control,\n name,\n });\n\n const [isKeyOpenArray, setIsKeyOpenArray] = useState([false]);\n const toggleKeySelect = (rowIndex: number, open: boolean) => {\n const arr = [...isKeyOpenArray];\n arr[rowIndex] = open;\n setIsKeyOpenArray(arr);\n };\n\n useEffect(() => {\n if (!fields.length) {\n append({ key: \"\", value: \"\" }, { shouldFocus: false });\n }\n }, [fields]);\n\n const watchLastValue = watch(`${name}.${fields.length - 1}.value`, \"\");\n\n return (\n \n \n \n {t(\"key\")}\n {t(\"value\")}\n \n \n \n {fields.map((attribute, rowIndex) => (\n \n \n (\n toggleKeySelect(rowIndex, open)}\n isOpen={isKeyOpenArray[rowIndex]}\n variant={SelectVariant.typeahead}\n typeAheadAriaLabel={t(\"clients:selectOrTypeAKey\")}\n placeholderText={t(\"clients:selectOrTypeAKey\")}\n selections={field.value}\n onSelect={(_, v) => {\n field.onChange(v.toString());\n\n toggleKeySelect(rowIndex, false);\n }}\n >\n {selectableValues?.map((attribute) => (\n \n {attribute.name}\n \n ))}\n \n )}\n />\n \n \n \n remove(rowIndex)}\n aria-label={t(\"common:remove\")}\n >\n \n \n \n \n ))}\n \n \n {\n append({ key: \"\", value: \"\" });\n setIsKeyOpenArray([...isKeyOpenArray, false]);\n }}\n icon={}\n isDisabled={!watchLastValue}\n data-testid=\"attribute-add-row\"\n >\n {t(\"addAttribute\")}\n \n \n \n \n \n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport {\n Button,\n Modal,\n ModalVariant,\n TextContent,\n Text,\n TextVariants,\n} from \"@patternfly/react-core\";\n\nimport type AccessTokenRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/accessTokenRepresentation\";\nimport { KeycloakTextArea } from \"../../components/keycloak-text-area/KeycloakTextArea\";\nimport useToggle from \"../../utils/useToggle\";\nimport { prettyPrintJSON } from \"../../util\";\n\ntype AuthorizationDataModalProps = {\n data: AccessTokenRepresentation;\n};\n\nexport const AuthorizationDataModal = ({\n data,\n}: AuthorizationDataModalProps) => {\n const { t } = useTranslation(\"clients\");\n const [show, toggle] = useToggle();\n\n return (\n <>\n \n {t(\"showAuthData\")}\n \n \n {t(\"authData\")}\n {t(\"authDataDescription\")}\n \n }\n onClose={toggle}\n actions={[\n \n {t(\"common:cancel\")}\n ,\n ]}\n >\n \n \n \n );\n};\n","import type EvaluationResultRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/evaluationResultRepresentation\";\nimport { DecisionEffect } from \"@keycloak/keycloak-admin-client/lib/defs/policyRepresentation\";\nimport type PolicyResultRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyResultRepresentation\";\nimport {\n capitalize,\n DescriptionList,\n TextContent,\n TextList,\n TextListItem,\n} from \"@patternfly/react-core\";\nimport { ExpandableRowContent, Tbody, Td, Tr } from \"@patternfly/react-table\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\n\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { useParams } from \"../../utils/useParams\";\nimport type { ClientParams } from \"../routes/Client\";\nimport { toPermissionDetails } from \"../routes/PermissionDetails\";\nimport { toPolicyDetails } from \"../routes/PolicyDetails\";\n\ntype Props = {\n idx: number;\n rowIndex: number;\n outerPolicy: PolicyResultRepresentation;\n resource: EvaluationResultRepresentation;\n};\n\nexport const AuthorizationEvaluateResourcePolicies = ({\n idx,\n rowIndex,\n outerPolicy,\n resource,\n}: Props) => {\n const [expanded, setExpanded] = useState(false);\n const { t } = useTranslation(\"clients\");\n const { realm } = useRealm();\n const { clientId } = useParams();\n\n return (\n \n \n setExpanded((prev) => !prev),\n }}\n />\n \n \n {outerPolicy.policy?.name}\n \n \n \n {t(outerPolicy.status?.toLowerCase() as string)}\n \n {t(`${outerPolicy.policy?.decisionStrategy?.toLowerCase()}`)}\n \n {outerPolicy.status === DecisionEffect.Permit\n ? resource.policies?.[rowIndex]?.scopes?.join(\", \")\n : \"-\"}\n \n \n {outerPolicy.status === DecisionEffect.Deny &&\n resource.policies?.[rowIndex]?.scopes?.length\n ? resource.policies[rowIndex].scopes?.join(\", \")\n : \"-\"}\n \n \n \n \n \n {expanded && (\n \n \n \n \n {outerPolicy.associatedPolicies?.map((item) => (\n \n \n {item.policy?.name}\n \n\n {t(\"votedToStatus\", {\n status: capitalize(item.status as string),\n })}\n \n ))}\n \n \n \n \n )}\n \n \n \n );\n};\n","import { useState } from \"react\";\nimport {\n ExpandableRowContent,\n TableComposable,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n} from \"@patternfly/react-table\";\nimport { DescriptionList } from \"@patternfly/react-core/dist/esm/components\";\nimport { useTranslation } from \"react-i18next\";\nimport { AuthorizationEvaluateResourcePolicies } from \"./AuthorizationEvaluateResourcePolicies\";\nimport type EvaluationResultRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/evaluationResultRepresentation\";\nimport type PolicyResultRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyResultRepresentation\";\n\ntype Props = {\n rowIndex: number;\n resource: EvaluationResultRepresentation;\n evaluateResults: any;\n};\n\nexport const AuthorizationEvaluateResource = ({\n rowIndex,\n resource,\n evaluateResults,\n}: Props) => {\n const [expanded, setExpanded] = useState(false);\n const { t } = useTranslation(\"clients\");\n\n return (\n \n \n setExpanded((prev) => !prev),\n }}\n />\n \n {resource.resource?.name}\n \n \n {t(`${resource.status?.toLowerCase()}`)}\n \n \n {resource.allowedScopes?.length\n ? resource.allowedScopes.map((item) => item.name)\n : \"-\"}\n \n \n \n \n \n \n {expanded && (\n \n \n \n \n \n {t(\"permission\")}\n {t(\"results\")}\n {t(\"decisionStrategy\")}\n {t(\"grantedScopes\")}\n {t(\"deniedScopes\")}\n \n \n \n {Object.values(evaluateResults[rowIndex].policies).map(\n (outerPolicy, idx) => (\n \n ),\n )}\n \n \n )}\n \n \n \n \n );\n};\n","import {\n Button,\n ButtonVariant,\n Divider,\n Form,\n InputGroup,\n PageSection,\n Select,\n SelectOption,\n SelectVariant,\n TextInput,\n Toolbar,\n ToolbarGroup,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { SearchIcon } from \"@patternfly/react-icons\";\nimport { TableComposable, Th, Thead, Tr } from \"@patternfly/react-table\";\nimport { KeyboardEvent, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport type EvaluationResultRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/evaluationResultRepresentation\";\nimport type PolicyEvaluationResponse from \"@keycloak/keycloak-admin-client/lib/defs/policyEvaluationResponse\";\nimport { FixedButtonsGroup } from \"../../../components/form/FixedButtonGroup\";\nimport { ListEmptyState } from \"../../../components/list-empty-state/ListEmptyState\";\nimport useToggle from \"../../../utils/useToggle\";\nimport { AuthorizationDataModal } from \"../AuthorizationDataModal\";\nimport { AuthorizationEvaluateResource } from \"../AuthorizationEvaluateResource\";\n\ntype ResultProps = {\n evaluateResult: PolicyEvaluationResponse;\n refresh: () => void;\n back: () => void;\n};\n\nenum ResultsFilter {\n All = \"ALL\",\n StatusDenied = \"STATUS_DENIED\",\n StatusPermitted = \"STATUS_PERMITTED\",\n}\n\nfunction filterResults(\n results: EvaluationResultRepresentation[],\n filter: ResultsFilter,\n) {\n switch (filter) {\n case ResultsFilter.StatusPermitted:\n return results.filter(({ status }) => status === \"PERMIT\");\n case ResultsFilter.StatusDenied:\n return results.filter(({ status }) => status === \"DENY\");\n default:\n return results;\n }\n}\n\nexport const Results = ({ evaluateResult, refresh, back }: ResultProps) => {\n const { t } = useTranslation(\"clients\");\n\n const [filterDropdownOpen, toggleFilterDropdown] = useToggle();\n\n const [filter, setFilter] = useState(ResultsFilter.All);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [searchInput, setSearchInput] = useState(\"\");\n\n const confirmSearchQuery = () => {\n setSearchQuery(searchInput);\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n confirmSearchQuery();\n }\n };\n\n const filteredResources = useMemo(\n () =>\n filterResults(evaluateResult.results!, filter).filter(\n ({ resource }) => resource?.name?.includes(searchQuery) ?? false,\n ),\n [evaluateResult.results, filter, searchQuery],\n );\n\n const noEvaluatedData = evaluateResult.results!.length === 0;\n const noFilteredData = filteredResources.length === 0;\n\n return (\n \n \n \n \n \n \n confirmSearchQuery()}\n >\n \n \n \n \n \n {\n setFilter(value as ResultsFilter);\n toggleFilterDropdown();\n refresh();\n }}\n selections={filter}\n >\n \n {t(\"allResults\")}\n \n \n {t(\"resultPermit\")}\n \n \n {t(\"resultDeny\")}\n \n \n \n \n \n {!noFilteredData && (\n \n \n \n \n {t(\"resource\")}\n {t(\"overallResults\")}\n {t(\"scopes\")}\n \n \n \n {filteredResources.map((resource, rowIndex) => (\n \n ))}\n \n )}\n {(noFilteredData || noEvaluatedData) && (\n <>\n \n \n \n )}\n
\n \n {\" \"}\n \n {t(\"clients:reevaluate\")}\n {\" \"}\n \n \n
\n \n );\n};\n","import type ClientRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientRepresentation\";\nimport type EvaluationResultRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/evaluationResultRepresentation\";\nimport type PolicyEvaluationResponse from \"@keycloak/keycloak-admin-client/lib/defs/policyEvaluationResponse\";\nimport type ResourceEvaluation from \"@keycloak/keycloak-admin-client/lib/defs/resourceEvaluation\";\nimport type ResourceRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceRepresentation\";\nimport type RoleRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/roleRepresentation\";\nimport type ScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/scopeRepresentation\";\nimport {\n ActionGroup,\n Button,\n ExpandableSection,\n FormGroup,\n PageSection,\n Panel,\n PanelHeader,\n PanelMainBody,\n Select,\n SelectOption,\n SelectVariant,\n Switch,\n Title,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, FormProvider, useForm, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { ForbiddenSection } from \"../../ForbiddenSection\";\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { ClientSelect } from \"../../components/client/ClientSelect\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport {\n KeyValueType,\n keyValueToArray,\n} from \"../../components/key-value-form/key-value-convert\";\nimport { KeycloakTextInput } from \"../../components/keycloak-text-input/KeycloakTextInput\";\nimport { UserSelect } from \"../../components/users/UserSelect\";\nimport { useAccess } from \"../../context/access/Access\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport { FormFields } from \"../ClientDetails\";\nimport { defaultContextAttributes } from \"../utils\";\nimport { KeyBasedAttributeInput } from \"./KeyBasedAttributeInput\";\nimport { Results } from \"./evaluate/Results\";\n\ninterface EvaluateFormInputs\n extends Omit {\n alias: string;\n authScopes: string[];\n context: {\n attributes: Record[];\n };\n resources?: Record[];\n client: FormFields;\n user: string[];\n}\n\nexport type AttributeType = {\n key: string;\n name: string;\n custom?: boolean;\n values?: {\n [key: string]: string;\n }[];\n};\n\ntype ClientSettingsProps = {\n client: ClientRepresentation;\n save: () => void;\n};\n\nexport type AttributeForm = Omit<\n EvaluateFormInputs,\n \"context\" | \"resources\"\n> & {\n context: {\n attributes?: KeyValueType[];\n };\n resources?: KeyValueType[];\n};\n\ntype Props = ClientSettingsProps & EvaluationResultRepresentation;\n\nexport const AuthorizationEvaluate = (props: Props) => {\n const { hasAccess } = useAccess();\n\n if (!hasAccess(\"view-users\")) {\n return ;\n }\n\n return ;\n};\n\nconst AuthorizationEvaluateContent = ({ client }: Props) => {\n const form = useForm({ mode: \"onChange\" });\n const {\n control,\n register,\n reset,\n trigger,\n formState: { isValid, errors },\n } = form;\n const { t } = useTranslation(\"clients\");\n const { addError } = useAlerts();\n const realm = useRealm();\n\n const [scopesDropdownOpen, setScopesDropdownOpen] = useState(false);\n\n const [roleDropdownOpen, setRoleDropdownOpen] = useState(false);\n const [isExpanded, setIsExpanded] = useState(false);\n const [applyToResourceType, setApplyToResourceType] = useState(false);\n const [resources, setResources] = useState([]);\n const [scopes, setScopes] = useState([]);\n const [evaluateResult, setEvaluateResult] =\n useState();\n\n const [clientRoles, setClientRoles] = useState([]);\n\n useFetch(\n () => adminClient.roles.find(),\n (roles) => {\n setClientRoles(roles);\n },\n [],\n );\n\n useFetch(\n () =>\n Promise.all([\n adminClient.clients.listResources({\n id: client.id!,\n }),\n adminClient.clients.listAllScopes({\n id: client.id!,\n }),\n ]),\n ([resources, scopes]) => {\n setResources(resources);\n setScopes(scopes);\n },\n [],\n );\n\n const evaluate = async () => {\n if (!(await trigger())) {\n return;\n }\n const formValues = form.getValues();\n const keys = keyValueToArray(formValues.resources as KeyValueType[]);\n const resEval: ResourceEvaluation = {\n roleIds: formValues.roleIds ?? [],\n clientId: formValues.client.id!,\n userId: formValues.user![0],\n resources: resources\n .filter((resource) => Object.keys(keys).includes(resource.name!))\n .map((r) => ({\n ...r,\n scopes: r.scopes?.filter((s) =>\n Object.values(keys)\n .flatMap((v) => v)\n .includes(s.name!),\n ),\n })),\n entitlements: false,\n context: {\n attributes: Object.fromEntries(\n formValues.context.attributes\n .filter((item) => item.key || item.value !== \"\")\n .map(({ key, value }) => [key, value]),\n ),\n },\n };\n\n try {\n const evaluation = await adminClient.clients.evaluateResource(\n { id: client.id!, realm: realm.realm },\n resEval,\n );\n\n setEvaluateResult(evaluation);\n } catch (error) {\n addError(\"clients:evaluateError\", error);\n }\n };\n\n const user = useWatch({ control, name: \"user\", defaultValue: [] });\n const roles = useWatch({ control, name: \"roleIds\", defaultValue: [] });\n\n if (evaluateResult) {\n return (\n setEvaluateResult(undefined)}\n />\n );\n }\n\n return (\n \n \n \n \n {t(\"clients:identityInformation\")}\n \n \n \n \n \n \n }\n fieldId=\"realmRole\"\n validated={errors.roleIds ? \"error\" : \"default\"}\n helperTextInvalid={t(\"common:required\")}\n isRequired={user.length === 0}\n >\n \n (value || \"\").length > 0 || user.length > 0,\n }}\n render={({ field }) => (\n {\n const option = v.toString();\n if (field.value?.includes(option)) {\n field.onChange(\n field.value.filter(\n (item: string) => item !== option,\n ),\n );\n } else {\n field.onChange([...(field.value || []), option]);\n }\n setRoleDropdownOpen(false);\n }}\n onClear={(event) => {\n event.stopPropagation();\n field.onChange([]);\n }}\n aria-label={t(\"realmRole\")}\n isOpen={roleDropdownOpen}\n >\n {clientRoles.map((role) => (\n \n ))}\n \n )}\n />\n \n \n \n \n \n \n {t(\"clients:identityInformation\")}\n \n \n \n \n }\n >\n \n \n\n {!applyToResourceType ? (\n \n }\n fieldId=\"resourcesAndScopes\"\n >\n ((item) => ({\n name: item.name!,\n key: item._id!,\n }))}\n resources={resources}\n name=\"resources\"\n />\n \n ) : (\n <>\n \n }\n fieldId=\"client\"\n validated={errors.alias ? \"error\" : \"default\"}\n helperTextInvalid={t(\"common:required\")}\n >\n \n \n \n }\n fieldId=\"authScopes\"\n >\n (\n {\n const option = v.toString();\n if (field.value.includes(option)) {\n field.onChange(\n field.value.filter(\n (item: string) => item !== option,\n ),\n );\n } else {\n field.onChange([...field.value, option]);\n }\n setScopesDropdownOpen(false);\n }}\n selections={field.value}\n variant={SelectVariant.typeaheadMulti}\n typeAheadAriaLabel={t(\"authScopes\")}\n isOpen={scopesDropdownOpen}\n >\n {scopes.map((scope) => (\n \n ))}\n \n )}\n />\n \n \n )}\n setIsExpanded(!isExpanded)}\n isExpanded={isExpanded}\n >\n \n }\n helperTextInvalid={t(\"common:required\")}\n fieldId=\"contextualAttributes\"\n >\n \n \n \n \n \n \n \n evaluate()}\n >\n {t(\"evaluate\")}\n \n reset()}\n >\n {t(\"common:revert\")}\n \n \n \n \n );\n};\n","import type ResourceServerRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceServerRepresentation\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n FormGroup,\n PageSection,\n} from \"@patternfly/react-core\";\nimport { saveAs } from \"file-saver\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { KeycloakSpinner } from \"../../components/keycloak-spinner/KeycloakSpinner\";\nimport { KeycloakTextArea } from \"../../components/keycloak-text-area/KeycloakTextArea\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport { prettyPrintJSON } from \"../../util\";\nimport { useParams } from \"../../utils/useParams\";\nimport type { ClientParams } from \"../routes/Client\";\n\nexport const AuthorizationExport = () => {\n const { t } = useTranslation(\"clients\");\n const { clientId } = useParams();\n const { addAlert, addError } = useAlerts();\n\n const [code, setCode] = useState();\n const [authorizationDetails, setAuthorizationDetails] =\n useState();\n\n useFetch(\n () =>\n adminClient.clients.exportResource({\n id: clientId,\n }),\n\n (authDetails) => {\n setCode(JSON.stringify(authDetails, null, 2));\n setAuthorizationDetails(authDetails);\n },\n [],\n );\n\n const exportAuthDetails = () => {\n try {\n saveAs(\n new Blob([prettyPrintJSON(authorizationDetails)], {\n type: \"application/json\",\n }),\n \"test-authz-config.json\",\n );\n addAlert(t(\"exportAuthDetailsSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"exportAuthDetailsError\", error);\n }\n };\n\n if (!code) {\n return ;\n }\n\n return (\n \n \n \n }\n fieldId=\"client\"\n >\n \n \n \n exportAuthDetails()}\n >\n {t(\"common:download\")}\n \n {\n try {\n await navigator.clipboard.writeText(code!);\n addAlert(t(\"copied\"), AlertVariant.success);\n } catch (error) {\n addError(t(\"copyError\"), error);\n }\n }}\n >\n {t(\"copy\")}\n \n \n \n \n );\n};\n","import {\n DescriptionListDescription,\n DescriptionListGroup,\n DescriptionListTerm,\n} from \"@patternfly/react-core\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, Path } from \"react-router-dom\";\n\ntype DetailDescriptionProps = {\n name: string;\n array?: string[] | T[];\n convert?: (obj: T) => string;\n};\n\nexport function DetailDescription(props: DetailDescriptionProps) {\n return ;\n}\n\ntype DetailDescriptionLinkProps = DetailDescriptionProps & {\n link?: (element: T) => Partial;\n};\n\nexport function DetailDescriptionLink({\n name,\n array,\n convert,\n link,\n}: DetailDescriptionLinkProps) {\n const { t } = useTranslation(\"clients\");\n return (\n \n {t(name)}\n \n {array?.map((element) => {\n const value =\n typeof element === \"string\" ? element : convert!(element);\n return link ? (\n \n {value}\n \n ) : (\n \n {value}\n \n );\n })}\n {array?.length === 0 && {t(\"common:none\")}}\n \n \n );\n}\n","import { useNavigate } from \"react-router-dom\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n EmptyState,\n EmptyStateIcon,\n Title,\n EmptyStateBody,\n Button,\n Tooltip,\n} from \"@patternfly/react-core\";\nimport { PlusCircleIcon } from \"@patternfly/react-icons\";\n\nimport { PermissionType, toNewPermission } from \"../routes/NewPermission\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { toUpperCase } from \"../../util\";\n\ntype EmptyButtonProps = {\n permissionType: PermissionType;\n disabled?: boolean;\n clientId: string;\n};\n\nconst EmptyButton = ({\n permissionType,\n disabled = false,\n clientId,\n}: EmptyButtonProps) => {\n const { t } = useTranslation(\"clients\");\n const { realm } = useRealm();\n const navigate = useNavigate();\n return (\n \n !disabled &&\n navigate(toNewPermission({ realm, id: clientId, permissionType }))\n }\n >\n {t(`create${toUpperCase(permissionType)}BasedPermission`)}\n \n );\n};\n\nconst TooltipEmptyButton = ({\n permissionType,\n disabled,\n ...props\n}: EmptyButtonProps) => {\n const { t } = useTranslation(\"clients\");\n return disabled ? (\n \n \n \n ) : (\n \n );\n};\n\ntype EmptyPermissionsStateProps = {\n clientId: string;\n isResourceEnabled?: boolean;\n isScopeEnabled?: boolean;\n};\n\nexport const EmptyPermissionsState = ({\n clientId,\n isResourceEnabled,\n isScopeEnabled,\n}: EmptyPermissionsStateProps) => {\n const { t } = useTranslation(\"clients\");\n return (\n \n \n \n {t(\"emptyPermissions\")}\n \n {t(\"emptyPermissionInstructions\")}\n \n
\n \n
\n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { Label } from \"@patternfly/react-core\";\n\ntype MoreLabelProps = {\n array: unknown[] | undefined;\n};\n\nexport const MoreLabel = ({ array }: MoreLabelProps) => {\n const { t } = useTranslation(\"clients\");\n\n if (!array || array.length <= 1) {\n return null;\n }\n return (\n \n );\n};\n","import type PolicyProviderRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyProviderRepresentation\";\nimport {\n ActionGroup,\n Button,\n Dropdown,\n DropdownToggle,\n Form,\n FormGroup,\n Select,\n SelectOption,\n SelectVariant,\n} from \"@patternfly/react-core\";\nimport { useEffect } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { KeycloakTextInput } from \"../../components/keycloak-text-input/KeycloakTextInput\";\nimport useToggle from \"../../utils/useToggle\";\n\nimport \"./search-dropdown.css\";\n\nexport type SearchForm = {\n name?: string;\n resource?: string;\n scope?: string;\n type?: string;\n uri?: string;\n owner?: string;\n};\n\ntype SearchDropdownProps = {\n types?: PolicyProviderRepresentation[] | PolicyProviderRepresentation[];\n search: SearchForm;\n onSearch: (form: SearchForm) => void;\n isResource?: boolean;\n};\n\nexport const SearchDropdown = ({\n types,\n search,\n onSearch,\n isResource = false,\n}: SearchDropdownProps) => {\n const { t } = useTranslation(\"clients\");\n const {\n register,\n control,\n reset,\n formState: { isDirty },\n handleSubmit,\n } = useForm({ mode: \"onChange\" });\n\n const [open, toggle] = useToggle();\n const [typeOpen, toggleType] = useToggle();\n\n const submit = (form: SearchForm) => {\n toggle();\n onSearch(form);\n };\n\n useEffect(() => reset(search), [search]);\n\n const typeOptions = (value?: string) => [\n \n {t(\"allTypes\")}\n ,\n ...(types || []).map((type) => (\n \n {type.name}\n
\n )),\n ];\n\n return (\n \n {t(\"searchForPermission\")}\n \n }\n isOpen={open}\n >\n \n \n \n \n {isResource && (\n <>\n \n \n \n \n \n \n \n \n \n \n )}\n {!isResource && (\n \n \n \n )}\n \n \n \n {!isResource && (\n \n (\n {\n event.stopPropagation();\n field.onChange(value);\n toggleType();\n }}\n selections={field.value || t(\"allTypes\")}\n variant={SelectVariant.single}\n aria-label={t(\"common:type\")}\n isOpen={typeOpen}\n >\n {typeOptions(field.value)}\n \n )}\n />\n \n )}\n \n \n {t(\"common:search\")}\n \n onSearch({})}\n >\n {t(\"common:clear\")}\n \n \n \n \n );\n};\n","import type PolicyProviderRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyProviderRepresentation\";\nimport type PolicyRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyRepresentation\";\nimport {\n Alert,\n AlertVariant,\n ButtonVariant,\n DescriptionList,\n Dropdown,\n DropdownItem,\n DropdownSeparator,\n DropdownToggle,\n PageSection,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport {\n ExpandableRowContent,\n TableComposable,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n} from \"@patternfly/react-table\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { KeycloakSpinner } from \"../../components/keycloak-spinner/KeycloakSpinner\";\nimport { ListEmptyState } from \"../../components/list-empty-state/ListEmptyState\";\nimport { PaginatingTableToolbar } from \"../../components/table-toolbar/PaginatingTableToolbar\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport useToggle from \"../../utils/useToggle\";\nimport { toNewPermission } from \"../routes/NewPermission\";\nimport { toPermissionDetails } from \"../routes/PermissionDetails\";\nimport { toPolicyDetails } from \"../routes/PolicyDetails\";\nimport { DetailDescriptionLink } from \"./DetailDescription\";\nimport { EmptyPermissionsState } from \"./EmptyPermissionsState\";\nimport { MoreLabel } from \"./MoreLabel\";\nimport { SearchDropdown, SearchForm } from \"./SearchDropdown\";\n\nimport \"./permissions.css\";\n\ntype PermissionsProps = {\n clientId: string;\n};\n\ntype ExpandablePolicyRepresentation = PolicyRepresentation & {\n associatedPolicies?: PolicyRepresentation[];\n isExpanded: boolean;\n};\n\nconst AssociatedPoliciesRenderer = ({\n row,\n}: {\n row: ExpandablePolicyRepresentation;\n}) => {\n return (\n <>\n {row.associatedPolicies?.[0]?.name}{\" \"}\n \n \n );\n};\n\nexport const AuthorizationPermissions = ({ clientId }: PermissionsProps) => {\n const { t } = useTranslation(\"clients\");\n const navigate = useNavigate();\n const { addAlert, addError } = useAlerts();\n const { realm } = useRealm();\n\n const [permissions, setPermissions] =\n useState();\n const [selectedPermission, setSelectedPermission] =\n useState();\n const [policyProviders, setPolicyProviders] =\n useState();\n const [disabledCreate, setDisabledCreate] = useState<{\n resources: boolean;\n scopes: boolean;\n }>();\n const [createOpen, toggleCreate] = useToggle();\n const [search, setSearch] = useState({});\n\n const [key, setKey] = useState(0);\n const refresh = () => setKey(key + 1);\n\n const [max, setMax] = useState(10);\n const [first, setFirst] = useState(0);\n\n useFetch(\n async () => {\n const permissions = await adminClient.clients.findPermissions({\n first,\n max: max + 1,\n id: clientId,\n ...search,\n });\n\n return await Promise.all(\n permissions.map(async (permission) => {\n const associatedPolicies =\n await adminClient.clients.getAssociatedPolicies({\n id: clientId,\n permissionId: permission.id!,\n });\n\n return {\n ...permission,\n associatedPolicies,\n isExpanded: false,\n };\n }),\n );\n },\n setPermissions,\n [key, search, first, max],\n );\n\n useFetch(\n async () => {\n const params = {\n first: 0,\n max: 1,\n };\n const [policies, resources, scopes] = await Promise.all([\n adminClient.clients.listPolicyProviders({\n id: clientId,\n }),\n adminClient.clients.listResources({ ...params, id: clientId }),\n adminClient.clients.listAllScopes({ ...params, id: clientId }),\n ]);\n return {\n policies: policies.filter(\n (p) => p.type === \"resource\" || p.type === \"scope\",\n ),\n resources: resources.length !== 1,\n scopes: scopes.length !== 1,\n };\n },\n ({ policies, resources, scopes }) => {\n setPolicyProviders(policies);\n setDisabledCreate({ resources, scopes });\n },\n [],\n );\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"clients:deletePermission\",\n messageKey: t(\"deletePermissionConfirm\", {\n permission: selectedPermission?.name,\n }),\n continueButtonVariant: ButtonVariant.danger,\n continueButtonLabel: \"clients:confirm\",\n onConfirm: async () => {\n try {\n await adminClient.clients.delPermission({\n id: clientId,\n type: selectedPermission?.type!,\n permissionId: selectedPermission?.id!,\n });\n addAlert(t(\"permissionDeletedSuccess\"), AlertVariant.success);\n refresh();\n } catch (error) {\n addError(\"clients:permissionDeletedError\", error);\n }\n },\n });\n\n if (!permissions) {\n return ;\n }\n\n const noData = permissions.length === 0;\n const searching = Object.keys(search).length !== 0;\n return (\n \n \n {(!noData || searching) && (\n {\n setFirst(first);\n setMax(max);\n }}\n toolbarItem={\n <>\n \n \n \n \n \n {t(\"createPermission\")}\n \n }\n isOpen={createOpen}\n dropdownItems={[\n \n navigate(\n toNewPermission({\n realm,\n id: clientId,\n permissionType: \"resource\",\n }),\n )\n }\n >\n {t(\"createResourceBasedPermission\")}\n ,\n ,\n \n navigate(\n toNewPermission({\n realm,\n id: clientId,\n permissionType: \"scope\",\n }),\n )\n }\n >\n {t(\"createScopeBasedPermission\")}\n {disabledCreate?.scopes && (\n \n )}\n ,\n ]}\n />\n \n \n }\n >\n {!noData && (\n \n \n \n \n {t(\"common:name\")}\n {t(\"common:type\")}\n {t(\"associatedPolicy\")}\n {t(\"common:description\")}\n \n \n \n {permissions.map((permission, rowIndex) => (\n \n \n {\n const rows = permissions.map((p, index) =>\n index === rowIndex\n ? { ...p, isExpanded: !p.isExpanded }\n : p,\n );\n setPermissions(rows);\n },\n }}\n />\n \n \n {permission.name}\n \n \n \n {\n policyProviders?.find((p) => p.type === permission.type)\n ?.name\n }\n \n \n \n \n {permission.description}\n {\n setSelectedPermission(permission);\n toggleDeleteDialog();\n },\n },\n ],\n }}\n >\n \n \n \n \n \n {permission.isExpanded && (\n \n p.name!}\n link={(p) =>\n toPolicyDetails({\n id: clientId,\n realm,\n policyId: p.id!,\n policyType: p.type!,\n })\n }\n />\n \n )}\n \n \n \n \n ))}\n \n )}\n \n )}\n {noData && !searching && (\n \n )}\n {noData && searching && (\n \n )}\n \n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport {\n Modal,\n ModalVariant,\n TextContent,\n Text,\n TextVariants,\n} from \"@patternfly/react-core\";\nimport {\n TableComposable,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n} from \"@patternfly/react-table\";\n\nimport type PolicyProviderRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyProviderRepresentation\";\nimport { isValidComponentType } from \"./policy/PolicyDetails\";\nimport { useMemo } from \"react\";\nimport useLocaleSort, { mapByKey } from \"../../utils/useLocaleSort\";\n\ntype NewPolicyDialogProps = {\n policyProviders?: PolicyProviderRepresentation[];\n toggleDialog: () => void;\n onSelect: (provider: PolicyProviderRepresentation) => void;\n};\n\nexport const NewPolicyDialog = ({\n policyProviders,\n onSelect,\n toggleDialog,\n}: NewPolicyDialogProps) => {\n const { t } = useTranslation(\"clients\");\n const localeSort = useLocaleSort();\n\n const sortedPolicies = useMemo(\n () =>\n policyProviders ? localeSort(policyProviders, mapByKey(\"name\")) : [],\n [policyProviders],\n );\n\n return (\n \n {t(\"chooseAPolicyType\")}\n {t(\"chooseAPolicyTypeInstructions\")}\n \n }\n isOpen\n onClose={toggleDialog}\n >\n \n \n \n {t(\"common:name\")}\n {t(\"common:description\")}\n \n \n \n {sortedPolicies.map((provider) => (\n onSelect(provider)}\n isHoverable\n >\n {provider.name}\n \n {isValidComponentType(provider.type!) &&\n t(`policyProvider.${provider.type}`)}\n \n \n ))}\n \n \n \n );\n};\n","import type PolicyProviderRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyProviderRepresentation\";\nimport type PolicyRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyRepresentation\";\nimport {\n Alert,\n AlertVariant,\n Button,\n DescriptionList,\n PageSection,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport {\n ExpandableRowContent,\n TableComposable,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n} from \"@patternfly/react-table\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { KeycloakSpinner } from \"../../components/keycloak-spinner/KeycloakSpinner\";\nimport { ListEmptyState } from \"../../components/list-empty-state/ListEmptyState\";\nimport { PaginatingTableToolbar } from \"../../components/table-toolbar/PaginatingTableToolbar\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { toUpperCase } from \"../../util\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport useToggle from \"../../utils/useToggle\";\nimport { toCreatePolicy } from \"../routes/NewPolicy\";\nimport { toPermissionDetails } from \"../routes/PermissionDetails\";\nimport { toPolicyDetails } from \"../routes/PolicyDetails\";\nimport { DetailDescriptionLink } from \"./DetailDescription\";\nimport { MoreLabel } from \"./MoreLabel\";\nimport { NewPolicyDialog } from \"./NewPolicyDialog\";\nimport { SearchDropdown, SearchForm } from \"./SearchDropdown\";\n\ntype PoliciesProps = {\n clientId: string;\n};\n\ntype ExpandablePolicyRepresentation = PolicyRepresentation & {\n dependentPolicies?: PolicyRepresentation[];\n isExpanded: boolean;\n};\n\nconst DependentPoliciesRenderer = ({\n row,\n}: {\n row: ExpandablePolicyRepresentation;\n}) => {\n return (\n <>\n {row.dependentPolicies?.[0]?.name}{\" \"}\n \n \n );\n};\n\nexport const AuthorizationPolicies = ({ clientId }: PoliciesProps) => {\n const { t } = useTranslation(\"clients\");\n const { addAlert, addError } = useAlerts();\n const { realm } = useRealm();\n const navigate = useNavigate();\n\n const [policies, setPolicies] = useState();\n const [selectedPolicy, setSelectedPolicy] =\n useState();\n const [policyProviders, setPolicyProviders] =\n useState();\n\n const [key, setKey] = useState(0);\n const refresh = () => setKey(key + 1);\n\n const [max, setMax] = useState(10);\n const [first, setFirst] = useState(0);\n const [search, setSearch] = useState({});\n const [newDialog, toggleDialog] = useToggle();\n\n useFetch(\n async () => {\n const policies = await adminClient.clients.listPolicies({\n first,\n max: max + 1,\n id: clientId,\n permission: \"false\",\n ...search,\n });\n\n return await Promise.all([\n adminClient.clients.listPolicyProviders({ id: clientId }),\n ...(policies || []).map(async (policy) => {\n const dependentPolicies =\n await adminClient.clients.listDependentPolicies({\n id: clientId,\n policyId: policy.id!,\n });\n\n return {\n ...policy,\n dependentPolicies,\n isExpanded: false,\n };\n }),\n ]);\n },\n ([providers, ...policies]) => {\n setPolicyProviders(\n providers.filter((p) => p.type !== \"resource\" && p.type !== \"scope\"),\n );\n setPolicies(policies);\n },\n [key, search, first, max],\n );\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"clients:deletePolicy\",\n children: (\n <>\n {t(\"deletePolicyConfirm\")}\n {selectedPolicy?.dependentPolicies &&\n selectedPolicy.dependentPolicies.length > 0 && (\n \n

\n {selectedPolicy.dependentPolicies.map((policy) => (\n \n {policy.name}\n \n ))}\n

\n \n )}\n \n ),\n continueButtonLabel: \"clients:confirm\",\n onConfirm: async () => {\n try {\n await adminClient.clients.delPolicy({\n id: clientId,\n policyId: selectedPolicy?.id!,\n });\n addAlert(t(\"policyDeletedSuccess\"), AlertVariant.success);\n refresh();\n } catch (error) {\n addError(\"clients:policyDeletedError\", error);\n }\n },\n });\n\n if (!policies) {\n return ;\n }\n\n const noData = policies.length === 0;\n const searching = Object.keys(search).length !== 0;\n return (\n \n \n {(!noData || searching) && (\n <>\n {newDialog && (\n \n navigate(\n toCreatePolicy({ id: clientId, realm, policyType: p.type! }),\n )\n }\n toggleDialog={toggleDialog}\n />\n )}\n\n {\n setFirst(first);\n setMax(max);\n }}\n toolbarItem={\n <>\n \n \n \n \n \n \n \n }\n >\n {!noData && (\n \n \n \n \n {t(\"common:name\")}\n {t(\"common:type\")}\n {t(\"dependentPermission\")}\n {t(\"common:description\")}\n \n \n \n {policies.map((policy, rowIndex) => (\n \n \n {\n const rows = policies.map((policy, index) =>\n index === rowIndex\n ? { ...policy, isExpanded: !policy.isExpanded }\n : policy,\n );\n setPolicies(rows);\n },\n }}\n />\n \n \n {policy.name}\n \n \n {toUpperCase(policy.type!)}\n \n \n \n {policy.description}\n {\n setSelectedPolicy(policy);\n toggleDeleteDialog();\n },\n },\n ],\n }}\n />\n \n \n \n \n \n {policy.isExpanded && (\n \n p.name!}\n link={(permission) =>\n toPermissionDetails({\n realm,\n id: clientId,\n permissionId: permission.id!,\n permissionType: permission.type!,\n })\n }\n />\n \n )}\n \n \n \n \n ))}\n \n )}\n \n \n )}\n {noData && searching && (\n \n )}\n {noData && !searching && (\n <>\n {newDialog && (\n p.type !== \"aggregate\",\n )}\n onSelect={(p) =>\n navigate(\n toCreatePolicy({ id: clientId, realm, policyType: p.type! }),\n )\n }\n toggleDialog={toggleDialog}\n />\n )}\n \n \n )}\n \n );\n};\n","import type ResourceServerRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceServerRepresentation\";\nimport { DescriptionList } from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { adminClient } from \"../../admin-client\";\n\nimport { KeycloakSpinner } from \"../../components/keycloak-spinner/KeycloakSpinner\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { toPermissionDetails } from \"../routes/PermissionDetails\";\nimport { toScopeDetails } from \"../routes/Scope\";\nimport { DetailDescription, DetailDescriptionLink } from \"./DetailDescription\";\n\nimport \"./detail-cell.css\";\n\ntype Scope = { id: string; name: string }[];\n\ntype DetailCellProps = {\n id: string;\n clientId: string;\n uris?: string[];\n};\n\nexport const DetailCell = ({ id, clientId, uris }: DetailCellProps) => {\n const { realm } = useRealm();\n const [scope, setScope] = useState();\n const [permissions, setPermissions] =\n useState();\n\n useFetch(\n () =>\n Promise.all([\n adminClient.clients.listScopesByResource({\n id: clientId,\n resourceName: id,\n }),\n adminClient.clients.listPermissionsByResource({\n id: clientId,\n resourceId: id,\n }),\n ]),\n ([scopes, permissions]) => {\n setScope(scopes);\n setPermissions(permissions);\n },\n [],\n );\n\n if (!permissions || !scope) {\n return ;\n }\n\n return (\n \n \n s.name}\n link={(scope) =>\n toScopeDetails({ id: clientId, realm, scopeId: scope.id! })\n }\n />\n p.name!}\n link={(permission) =>\n toPermissionDetails({\n id: clientId,\n realm,\n permissionId: permission.id!,\n permissionType: \"resource\",\n })\n }\n />\n \n );\n};\n","import type ResourceRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceRepresentation\";\nimport type ResourceServerRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceServerRepresentation\";\nimport {\n Alert,\n AlertVariant,\n Button,\n PageSection,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport {\n ExpandableRowContent,\n TableComposable,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n} from \"@patternfly/react-table\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { KeycloakSpinner } from \"../../components/keycloak-spinner/KeycloakSpinner\";\nimport { ListEmptyState } from \"../../components/list-empty-state/ListEmptyState\";\nimport { PaginatingTableToolbar } from \"../../components/table-toolbar/PaginatingTableToolbar\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport { toNewPermission } from \"../routes/NewPermission\";\nimport { toCreateResource } from \"../routes/NewResource\";\nimport { toResourceDetails } from \"../routes/Resource\";\nimport { DetailCell } from \"./DetailCell\";\nimport { MoreLabel } from \"./MoreLabel\";\nimport { SearchDropdown, SearchForm } from \"./SearchDropdown\";\n\ntype ResourcesProps = {\n clientId: string;\n};\n\ntype ExpandableResourceRepresentation = ResourceRepresentation & {\n isExpanded: boolean;\n};\n\nconst UriRenderer = ({ row }: { row: ResourceRepresentation }) => (\n <>\n {row.uris?.[0]} \n \n);\n\nexport const AuthorizationResources = ({ clientId }: ResourcesProps) => {\n const { t } = useTranslation(\"clients\");\n const navigate = useNavigate();\n const { addAlert, addError } = useAlerts();\n const { realm } = useRealm();\n\n const [resources, setResources] =\n useState();\n const [selectedResource, setSelectedResource] =\n useState();\n const [permissions, setPermission] =\n useState();\n\n const [key, setKey] = useState(0);\n const refresh = () => setKey(key + 1);\n\n const [max, setMax] = useState(10);\n const [first, setFirst] = useState(0);\n const [search, setSearch] = useState({});\n\n useFetch(\n () => {\n const params = {\n first,\n max: max + 1,\n deep: false,\n ...search,\n };\n return adminClient.clients.listResources({\n ...params,\n id: clientId,\n });\n },\n (resources) =>\n setResources(\n resources.map((resource) => ({ ...resource, isExpanded: false })),\n ),\n [key, search, first, max],\n );\n\n const fetchPermissions = async (id: string) => {\n return adminClient.clients.listPermissionsByResource({\n id: clientId,\n resourceId: id,\n });\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"clients:deleteResource\",\n children: (\n <>\n {t(\"deleteResourceConfirm\")}\n {permissions?.length && (\n \n

\n {permissions.map((permission) => (\n \n {permission.name}\n \n ))}\n

\n \n )}\n \n ),\n continueButtonLabel: \"clients:confirm\",\n onConfirm: async () => {\n try {\n await adminClient.clients.delResource({\n id: clientId,\n resourceId: selectedResource?._id!,\n });\n addAlert(t(\"resourceDeletedSuccess\"), AlertVariant.success);\n refresh();\n } catch (error) {\n addError(\"clients:resourceDeletedError\", error);\n }\n },\n });\n\n if (!resources) {\n return ;\n }\n\n const noData = resources.length === 0;\n const searching = Object.keys(search).length !== 0;\n return (\n \n \n {(!noData || searching) && (\n {\n setFirst(first);\n setMax(max);\n }}\n toolbarItem={\n <>\n \n \n \n\n \n (\n \n )}\n >\n {t(\"createResource\")}\n \n \n \n }\n >\n {!noData && (\n \n \n \n \n {t(\"common:name\")}\n {t(\"displayName\")}\n {t(\"common:type\")}\n {t(\"owner\")}\n {t(\"uris\")}\n \n \n \n \n {resources.map((resource, rowIndex) => (\n \n \n {\n const rows = resources.map((resource, index) =>\n index === rowIndex\n ? {\n ...resource,\n isExpanded: !resource.isExpanded,\n }\n : resource,\n );\n setResources(rows);\n },\n }}\n />\n \n \n {resource.name}\n \n \n {resource.displayName}\n {resource.type}\n {resource.owner?.name}\n \n \n \n \n (\n \n )}\n >\n {t(\"createPermission\")}\n \n \n {\n setSelectedResource(resource);\n setPermission(\n await fetchPermissions(resource._id!),\n );\n toggleDeleteDialog();\n },\n },\n ],\n }}\n />\n \n \n \n \n \n {resource.isExpanded && (\n \n )}\n \n \n \n \n ))}\n \n )}\n \n )}\n {noData && searching && (\n \n )}\n {noData && !searching && (\n \n navigate(toCreateResource({ realm, id: clientId }))\n }\n />\n )}\n \n );\n};\n","import type PolicyRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyRepresentation\";\nimport type ScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/scopeRepresentation\";\nimport {\n Button,\n DescriptionList,\n PageSection,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport {\n ExpandableRowContent,\n TableComposable,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n} from \"@patternfly/react-table\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { KeycloakSpinner } from \"../../components/keycloak-spinner/KeycloakSpinner\";\nimport { ListEmptyState } from \"../../components/list-empty-state/ListEmptyState\";\nimport { PaginatingTableToolbar } from \"../../components/table-toolbar/PaginatingTableToolbar\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport useToggle from \"../../utils/useToggle\";\nimport { toNewPermission } from \"../routes/NewPermission\";\nimport { toNewScope } from \"../routes/NewScope\";\nimport { toPermissionDetails } from \"../routes/PermissionDetails\";\nimport { toResourceDetails } from \"../routes/Resource\";\nimport { toScopeDetails } from \"../routes/Scope\";\nimport { DeleteScopeDialog } from \"./DeleteScopeDialog\";\nimport { DetailDescriptionLink } from \"./DetailDescription\";\n\ntype ScopesProps = {\n clientId: string;\n};\n\nexport type PermissionScopeRepresentation = ScopeRepresentation & {\n permissions?: PolicyRepresentation[];\n isLoaded: boolean;\n};\n\ntype ExpandableRow = {\n id: string;\n isExpanded: boolean;\n};\n\nexport const AuthorizationScopes = ({ clientId }: ScopesProps) => {\n const { t } = useTranslation(\"clients\");\n const navigate = useNavigate();\n const { realm } = useRealm();\n\n const [deleteDialog, toggleDeleteDialog] = useToggle();\n const [scopes, setScopes] = useState();\n const [selectedScope, setSelectedScope] =\n useState();\n const [collapsed, setCollapsed] = useState([]);\n\n const [key, setKey] = useState(0);\n const refresh = () => setKey(key + 1);\n\n const [max, setMax] = useState(10);\n const [first, setFirst] = useState(0);\n const [search, setSearch] = useState(\"\");\n\n useFetch(\n () => {\n const params = {\n first,\n max: max + 1,\n deep: false,\n name: search,\n };\n return adminClient.clients.listAllScopes({\n ...params,\n id: clientId,\n });\n },\n (scopes) => {\n setScopes(scopes.map((s) => ({ ...s, isLoaded: false })));\n setCollapsed(scopes.map((s) => ({ id: s.id!, isExpanded: false })));\n },\n [key, search, first, max],\n );\n\n const getScope = (id: string) => scopes?.find((scope) => scope.id === id)!;\n const isExpanded = (id: string | undefined) =>\n collapsed.find((c) => c.id === id)?.isExpanded || false;\n\n useFetch(\n () => {\n const newlyOpened = collapsed\n .filter((row) => row.isExpanded)\n .map(({ id }) => getScope(id))\n .filter((s) => !s.isLoaded);\n\n return Promise.all(\n newlyOpened.map(async (scope) => {\n const [resources, permissions] = await Promise.all([\n adminClient.clients.listAllResourcesByScope({\n id: clientId,\n scopeId: scope.id!,\n }),\n adminClient.clients.listAllPermissionsByScope({\n id: clientId,\n scopeId: scope.id!,\n }),\n ]);\n\n return {\n ...scope,\n resources,\n permissions,\n isLoaded: true,\n };\n }),\n );\n },\n (resourcesScopes) => {\n let result = [...(scopes || [])];\n resourcesScopes.forEach((resourceScope) => {\n const index = scopes?.findIndex(\n (scope) => resourceScope.id === scope.id,\n )!;\n result = [\n ...result.slice(0, index),\n resourceScope,\n ...result.slice(index + 1),\n ];\n });\n\n setScopes(result);\n },\n [collapsed],\n );\n\n if (!scopes) {\n return ;\n }\n\n const noData = scopes.length === 0;\n const searching = search !== \"\";\n return (\n \n \n {(!noData || searching) && (\n {\n setFirst(first);\n setMax(max);\n }}\n inputGroupName=\"search\"\n inputGroupPlaceholder={t(\"searchByName\")}\n inputGroupOnEnter={setSearch}\n toolbarItem={\n \n (\n \n )}\n >\n {t(\"createAuthorizationScope\")}\n \n \n }\n >\n {!noData && (\n \n \n \n \n {t(\"common:name\")}\n {t(\"displayName\")}\n \n \n \n \n {scopes.map((scope, rowIndex) => (\n \n \n {\n setCollapsed([\n ...collapsed.slice(0, index),\n { id: scope.id!, isExpanded },\n ...collapsed.slice(index + 1),\n ]);\n },\n }}\n />\n \n \n {scope.name}\n \n \n {scope.displayName}\n \n (\n \n )}\n >\n {t(\"createPermission\")}\n \n \n {\n setSelectedScope(scope);\n toggleDeleteDialog();\n },\n },\n ],\n }}\n />\n \n \n \n \n \n {isExpanded(scope.id) && scope.isLoaded ? (\n \n r.name!}\n link={(r) =>\n toResourceDetails({\n id: clientId,\n realm,\n resourceId: r._id!,\n })\n }\n />\n p.name!}\n link={(p) =>\n toPermissionDetails({\n id: clientId,\n realm,\n permissionId: p.id!,\n permissionType: p.type!,\n })\n }\n />\n \n ) : (\n \n )}\n \n \n \n \n ))}\n \n )}\n \n )}\n {noData && !searching && (\n navigate(toNewScope({ id: clientId, realm }))}\n primaryActionText={t(\"createAuthorizationScope\")}\n />\n )}\n {noData && searching && (\n \n )}\n \n );\n};\n","import { Fragment, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n Alert,\n Button,\n ButtonVariant,\n Divider,\n Form,\n FormGroup,\n Modal,\n Radio,\n Switch,\n} from \"@patternfly/react-core\";\n\nimport type ResourceServerRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceServerRepresentation\";\nimport { JsonFileUpload } from \"../../components/json-file-upload/JsonFileUpload\";\nimport { HelpItem } from \"ui-shared\";\n\ntype ImportDialogProps = {\n onConfirm: (value: ResourceServerRepresentation) => void;\n closeDialog: () => void;\n};\n\nexport const ImportDialog = ({ onConfirm, closeDialog }: ImportDialogProps) => {\n const { t } = useTranslation(\"clients\");\n const [imported, setImported] = useState({});\n return (\n {\n onConfirm(imported);\n closeDialog();\n }}\n data-testid=\"confirm\"\n >\n {t(\"confirm\")}\n ,\n {\n closeDialog();\n }}\n >\n {t(\"common:cancel\")}\n ,\n ]}\n >\n
\n \n \n {Object.keys(imported).length !== 0 && (\n <>\n \n

{t(\"importResources\")}

\n
\n \n }\n fieldId=\"policyEnforcementMode\"\n hasNoPaddingTop\n >\n \n \n \n }\n fieldId=\"decisionStrategy\"\n hasNoPaddingTop\n >\n \n \n \n }\n >\n \n \n \n
\n {Object.entries(imported)\n .filter(([, value]) => Array.isArray(value))\n .map(([key, value]) => (\n \n \n

\n \n {value.length} {t(key)}\n \n

\n
\n ))}\n
\n \n \n \n )}\n \n );\n};\n","import {\n AlertVariant,\n Button,\n Divider,\n FormGroup,\n PageSection,\n Radio,\n Switch,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../admin-client\";\nimport type ResourceServerRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/resourceServerRepresentation\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { FixedButtonsGroup } from \"../../components/form/FixedButtonGroup\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { KeycloakSpinner } from \"../../components/keycloak-spinner/KeycloakSpinner\";\nimport useToggle from \"../../utils/useToggle\";\nimport { DecisionStrategySelect } from \"./DecisionStrategySelect\";\nimport { ImportDialog } from \"./ImportDialog\";\nimport { useFetch } from \"../../utils/useFetch\";\n\nconst POLICY_ENFORCEMENT_MODES = [\n \"ENFORCING\",\n \"PERMISSIVE\",\n \"DISABLED\",\n] as const;\n\nexport type FormFields = Omit<\n ResourceServerRepresentation,\n \"scopes\" | \"resources\"\n>;\n\nexport const AuthorizationSettings = ({ clientId }: { clientId: string }) => {\n const { t } = useTranslation(\"clients\");\n const [resource, setResource] = useState();\n const [importDialog, toggleImportDialog] = useToggle();\n\n const form = useForm({});\n const { control, reset, handleSubmit } = form;\n\n const { addAlert, addError } = useAlerts();\n\n useFetch(\n () => adminClient.clients.getResourceServer({ id: clientId }),\n (resource) => {\n setResource(resource);\n reset(resource);\n },\n [],\n );\n\n const importResource = async (value: ResourceServerRepresentation) => {\n try {\n await adminClient.clients.importResource({ id: clientId }, value);\n addAlert(t(\"importResourceSuccess\"), AlertVariant.success);\n reset({ ...value });\n } catch (error) {\n addError(\"clients:importResourceError\", error);\n }\n };\n\n const onSubmit = async (resource: ResourceServerRepresentation) => {\n try {\n await adminClient.clients.updateResourceServer(\n { id: clientId },\n resource,\n );\n addAlert(t(\"updateResourceSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"clients:resourceSaveError\", error);\n }\n };\n\n if (!resource) {\n return ;\n }\n\n return (\n \n {importDialog && (\n \n )}\n \n \n }\n >\n \n \n \n \n }\n fieldId=\"policyEnforcementMode\"\n hasNoPaddingTop\n >\n (\n <>\n {POLICY_ENFORCEMENT_MODES.map((mode) => (\n field.onChange(mode)}\n label={t(`policyEnforcementModes.${mode}`)}\n className=\"pf-u-mb-md\"\n />\n ))}\n \n )}\n />\n \n \n \n \n \n }\n >\n (\n \n )}\n />\n \n reset(resource)}\n isActive\n isSubmit\n />\n \n \n );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n ClipboardCopyButton,\n ClipboardCopyButtonProps,\n} from \"@patternfly/react-core\";\n\nimport useSetTimeout from \"../../utils/useSetTimeout\";\n\nenum CopyState {\n Ready,\n Copied,\n Error,\n}\n\ntype CopyToClipboardButtonProps = Pick & {\n id: string;\n label: string;\n text: string;\n};\n\nexport const CopyToClipboardButton = ({\n id,\n label,\n text,\n variant = \"plain\",\n}: CopyToClipboardButtonProps) => {\n const { t } = useTranslation(\"clients\");\n const setTimeout = useSetTimeout();\n\n const [copy, setCopy] = useState(CopyState.Ready);\n\n const copyMessage = useMemo(() => {\n switch (copy) {\n case CopyState.Ready:\n return t(\"copyToClipboard\");\n case CopyState.Copied:\n return t(\"copySuccess\");\n case CopyState.Error:\n return t(\"clipboardCopyError\");\n }\n }, [copy]);\n\n useEffect(() => {\n if (copy !== CopyState.Ready) {\n return setTimeout(() => setCopy(CopyState.Ready), 1000);\n }\n }, [copy]);\n\n const copyToClipboard = async (text: string) => {\n try {\n await navigator.clipboard.writeText(text);\n setCopy(CopyState.Copied);\n } catch (error) {\n setCopy(CopyState.Error);\n }\n };\n\n return (\n copyToClipboard(text)}\n exitDelay={600}\n variant={variant}\n >\n {copyMessage}\n \n );\n};\n","import type ClientRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientRepresentation\";\nimport {\n Alert,\n Button,\n FormGroup,\n InputGroup,\n Split,\n SplitItem,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { PasswordInput } from \"../../components/password-input/PasswordInput\";\nimport { useAccess } from \"../../context/access/Access\";\nimport useFormatDate from \"../../utils/useFormatDate\";\nimport { CopyToClipboardButton } from \"../scopes/CopyToClipboardButton\";\n\nexport type ClientSecretProps = {\n client: ClientRepresentation;\n secret: string;\n toggle: () => void;\n};\n\ntype SecretInputProps = ClientSecretProps & {\n id: string;\n buttonLabel: string;\n};\n\nconst SecretInput = ({\n id,\n buttonLabel,\n client,\n secret,\n toggle,\n}: SecretInputProps) => {\n const { t } = useTranslation(\"clients\");\n const form = useFormContext();\n const { hasAccess } = useAccess();\n const isManager = hasAccess(\"manage-clients\") || client.access?.configure;\n\n return (\n \n \n \n \n \n \n \n \n \n {t(buttonLabel)}\n \n \n \n );\n};\n\nconst ExpireDateFormatter = ({ time }: { time: number }) => {\n const { t } = useTranslation(\"clients\");\n const formatDate = useFormatDate();\n const unixTimeToString = (time: number) =>\n time\n ? t(\"secretExpiresOn\", {\n time: formatDate(new Date(time * 1000), {\n dateStyle: \"full\",\n timeStyle: \"long\",\n }),\n })\n : undefined;\n\n return
{unixTimeToString(time)}
;\n};\n\nexport const ClientSecret = ({ client, secret, toggle }: ClientSecretProps) => {\n const { t } = useTranslation(\"clients\");\n const { addAlert, addError } = useAlerts();\n\n const [secretRotated, setSecretRotated] = useState(\n client.attributes?.[\"client.secret.rotated\"],\n );\n const secretExpirationTime: number =\n client.attributes?.[\"client.secret.expiration.time\"];\n const secretRotatedExpirationTime: number =\n client.attributes?.[\"client.secret.rotated.expiration.time\"];\n\n const expired = (time: number) => new Date().getTime() >= time * 1000;\n\n const [toggleInvalidateConfirm, InvalidateConfirm] = useConfirmDialog({\n titleKey: \"clients:invalidateRotatedSecret\",\n messageKey: \"clients:invalidateRotatedSecretExplain\",\n continueButtonLabel: \"common:confirm\",\n onConfirm: async () => {\n try {\n await adminClient.clients.invalidateSecret({\n id: client.id!,\n });\n setSecretRotated(undefined);\n addAlert(t(\"invalidateRotatedSuccess\"));\n } catch (error) {\n addError(\"clients:invalidateRotatedError\", error);\n }\n },\n });\n\n return (\n <>\n \n \n \n \n {expired(secretExpirationTime) && (\n \n )}\n \n {secretRotated && (\n \n \n \n \n )}\n \n );\n};\n","import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport {\n FormGroup,\n Select,\n SelectOption,\n SelectVariant,\n} from \"@patternfly/react-core\";\n\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\nimport { HelpItem } from \"ui-shared\";\nimport { convertAttributeNameToForm } from \"../../util\";\nimport { FormFields } from \"../ClientDetails\";\n\ntype SignedJWTProps = {\n clientAuthenticatorType: string;\n};\n\nexport const SignedJWT = ({ clientAuthenticatorType }: SignedJWTProps) => {\n const { control } = useFormContext();\n const { cryptoInfo } = useServerInfo();\n const providers =\n clientAuthenticatorType === \"client-jwt\"\n ? cryptoInfo?.clientSignatureAsymmetricAlgorithms ?? []\n : cryptoInfo?.clientSignatureSymmetricAlgorithms ?? [];\n\n const { t } = useTranslation(\"clients\");\n\n const [open, isOpen] = useState(false);\n return (\n \n }\n >\n (\n \"attributes.token.endpoint.auth.signing.alg\",\n )}\n defaultValue=\"\"\n control={control}\n render={({ field }) => (\n {\n field.onChange(value.toString());\n isOpen(false);\n }}\n selections={field.value || t(\"anyAlgorithm\")}\n variant={SelectVariant.single}\n aria-label={t(\"signatureAlgorithm\")}\n isOpen={open}\n >\n \n {t(\"anyAlgorithm\")}\n \n <>\n {providers.map((option) => (\n \n ))}\n \n \n )}\n />\n \n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { FormGroup, Switch, ValidatedOptions } from \"@patternfly/react-core\";\nimport { HelpItem } from \"ui-shared\";\nimport { KeycloakTextInput } from \"../../components/keycloak-text-input/KeycloakTextInput\";\nimport { beerify, convertAttributeNameToForm } from \"../../util\";\nimport { FormFields } from \"../ClientDetails\";\n\nexport const X509 = () => {\n const { t } = useTranslation(\"clients\");\n const {\n register,\n control,\n formState: { errors },\n } = useFormContext();\n return (\n <>\n \n }\n fieldId=\"allowRegexComparison\"\n hasNoPaddingTop\n >\n (\n \"attributes.x509.allow.regex.pattern.comparison\",\n )}\n defaultValue=\"false\"\n control={control}\n render={({ field }) => (\n field.onChange(value.toString())}\n aria-label={t(\"allowRegexComparison\")}\n />\n )}\n />\n \n \n }\n helperTextInvalid={t(\"common:required\")}\n validated={\n errors.attributes?.[beerify(\"x509.subjectdn\")]\n ? ValidatedOptions.error\n : ValidatedOptions.default\n }\n isRequired\n >\n \n \n \n );\n};\n","import type { AuthenticationProviderRepresentation } from \"@keycloak/keycloak-admin-client/lib/defs/authenticatorConfigRepresentation\";\nimport type ClientRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientRepresentation\";\nimport type CredentialRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/credentialRepresentation\";\nimport {\n ActionGroup,\n Alert,\n AlertVariant,\n Button,\n Card,\n CardBody,\n ClipboardCopy,\n Divider,\n FormGroup,\n PageSection,\n Select,\n SelectOption,\n SelectVariant,\n Split,\n SplitItem,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport { FormFields } from \"../ClientDetails\";\nimport { ClientSecret } from \"./ClientSecret\";\nimport { SignedJWT } from \"./SignedJWT\";\nimport { X509 } from \"./X509\";\n\ntype AccessToken = {\n registrationAccessToken: string;\n};\n\nexport type CredentialsProps = {\n client: ClientRepresentation;\n save: () => void;\n refresh: () => void;\n};\n\nexport const Credentials = ({ client, save, refresh }: CredentialsProps) => {\n const { t } = useTranslation(\"clients\");\n const { addAlert, addError } = useAlerts();\n const clientId = client.id!;\n\n const [providers, setProviders] = useState<\n AuthenticationProviderRepresentation[]\n >([]);\n\n const {\n control,\n formState: { isDirty },\n handleSubmit,\n } = useFormContext();\n\n const clientAuthenticatorType = useWatch({\n control: control,\n name: \"clientAuthenticatorType\",\n defaultValue: \"\",\n });\n\n const [secret, setSecret] = useState(\"\");\n const [accessToken, setAccessToken] = useState(\"\");\n const [open, isOpen] = useState(false);\n\n useFetch(\n () =>\n Promise.all([\n adminClient.authenticationManagement.getClientAuthenticatorProviders(),\n adminClient.clients.getClientSecret({\n id: clientId,\n }),\n ]),\n ([providers, secret]) => {\n setProviders(providers);\n setSecret(secret.value!);\n },\n [],\n );\n\n async function regenerate(\n call: (clientId: string) => Promise,\n message: string,\n ): Promise {\n try {\n const data = await call(clientId);\n addAlert(t(`${message}Success`), AlertVariant.success);\n return data;\n } catch (error) {\n addError(`clients:${message}Error`, error);\n }\n }\n\n const regenerateClientSecret = async () => {\n const secret = await regenerate(\n (clientId) =>\n adminClient.clients.generateNewClientSecret({ id: clientId }),\n \"clientSecret\",\n );\n setSecret(secret?.value || \"\");\n refresh();\n };\n\n const [toggleClientSecretConfirm, ClientSecretConfirm] = useConfirmDialog({\n titleKey: \"clients:confirmClientSecretTitle\",\n messageKey: \"clients:confirmClientSecretBody\",\n continueButtonLabel: \"common:yes\",\n cancelButtonLabel: \"common:no\",\n onConfirm: regenerateClientSecret,\n });\n\n const regenerateAccessToken = async () => {\n const accessToken = await regenerate(\n (clientId) =>\n adminClient.clients.generateRegistrationAccessToken({ id: clientId }),\n \"accessToken\",\n );\n setAccessToken(accessToken?.registrationAccessToken || \"\");\n };\n\n const [toggleAccessTokenConfirm, AccessTokenConfirm] = useConfirmDialog({\n titleKey: \"clients:confirmAccessTokenTitle\",\n messageKey: \"clients:confirmAccessTokenBody\",\n continueButtonLabel: \"common:yes\",\n cancelButtonLabel: \"common:no\",\n onConfirm: regenerateAccessToken,\n });\n\n return (\n \n \n \n \n \n \n \n }\n >\n (\n {\n field.onChange(value as string);\n isOpen(false);\n }}\n selections={field.value}\n variant={SelectVariant.single}\n aria-label={t(\"clientAuthenticator\")}\n isOpen={open}\n >\n {providers.map((option) => (\n \n {option.displayName}\n
\n ))}\n \n )}\n />\n \n {(clientAuthenticatorType === \"client-jwt\" ||\n clientAuthenticatorType === \"client-secret-jwt\") && (\n \n )}\n {clientAuthenticatorType === \"client-jwt\" && (\n \n \n \n )}\n {clientAuthenticatorType === \"client-x509\" && }\n \n \n \n \n {(clientAuthenticatorType === \"client-secret\" ||\n clientAuthenticatorType === \"client-secret-jwt\") && }\n {(clientAuthenticatorType === \"client-secret\" ||\n clientAuthenticatorType === \"client-secret-jwt\") && (\n \n \n \n )}\n \n \n \n \n }\n >\n \n \n \n {accessToken}\n \n \n \n \n {t(\"regenerate\")}\n \n \n \n \n \n \n \n \n );\n};\n","import type CertificateRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/certificateRepresentation\";\nimport { FormGroup } from \"@patternfly/react-core\";\nimport { useId } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { HelpItem } from \"ui-shared\";\nimport { KeycloakTextArea } from \"../../components/keycloak-text-area/KeycloakTextArea\";\n\ntype CertificateProps = Omit & {\n plain?: boolean;\n};\n\ntype CertificateDisplayProps = {\n id: string;\n keyInfo?: CertificateRepresentation;\n};\n\nconst CertificateDisplay = ({ id, keyInfo }: CertificateDisplayProps) => {\n const { t } = useTranslation(\"clients\");\n return (\n \n );\n};\n\nexport const Certificate = ({ keyInfo, plain = false }: CertificateProps) => {\n const { t } = useTranslation(\"clients\");\n const id = useId();\n\n return plain ? (\n \n ) : (\n \n }\n >\n \n \n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { useFormContext } from \"react-hook-form\";\nimport { FormGroup } from \"@patternfly/react-core\";\n\nimport type KeyStoreConfig from \"@keycloak/keycloak-admin-client/lib/defs/keystoreConfig\";\nimport { HelpItem } from \"ui-shared\";\nimport { PasswordInput } from \"../../components/password-input/PasswordInput\";\nimport { KeycloakTextInput } from \"../../components/keycloak-text-input/KeycloakTextInput\";\n\nexport const StoreSettings = ({\n hidePassword = false,\n isSaml = false,\n}: {\n hidePassword?: boolean;\n isSaml?: boolean;\n}) => {\n const { t } = useTranslation(\"clients\");\n const {\n register,\n formState: { errors },\n } = useFormContext();\n\n return (\n <>\n \n }\n helperTextInvalid={t(\"common:required\")}\n validated={errors.keyAlias ? \"error\" : \"default\"}\n >\n \n \n {!hidePassword && (\n \n }\n helperTextInvalid={t(\"common:required\")}\n validated={errors.keyPassword ? \"error\" : \"default\"}\n >\n \n \n )}\n {isSaml && (\n \n }\n >\n \n \n )}\n \n }\n helperTextInvalid={t(\"common:required\")}\n validated={errors.storePassword ? \"error\" : \"default\"}\n >\n \n \n \n );\n};\n","import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n Controller,\n FormProvider,\n useForm,\n useFormContext,\n} from \"react-hook-form\";\nimport {\n Button,\n ButtonVariant,\n Form,\n FormGroup,\n Modal,\n ModalVariant,\n Select,\n SelectOption,\n SelectVariant,\n Text,\n TextContent,\n} from \"@patternfly/react-core\";\n\nimport type KeyStoreConfig from \"@keycloak/keycloak-admin-client/lib/defs/keystoreConfig\";\nimport { HelpItem } from \"ui-shared\";\nimport { StoreSettings } from \"./StoreSettings\";\nimport { FileUpload } from \"../../components/json-file-upload/patternfly/FileUpload\";\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\n\ntype GenerateKeyDialogProps = {\n clientId: string;\n toggleDialog: () => void;\n save: (keyStoreConfig: KeyStoreConfig) => void;\n};\n\ntype KeyFormProps = {\n useFile?: boolean;\n isSaml?: boolean;\n hasPem?: boolean;\n};\n\nconst CERT_PEM = \"Certificate PEM\" as const;\n\nconst extensions = new Map([\n [\"PKCS12\", \"p12\"],\n [\"JKS\", \"jks\"],\n [\"BCFKS\", \"bcfks\"],\n]);\n\ntype FormFields = KeyStoreConfig & {\n file: string | File;\n};\n\nexport const getFileExtension = (format: string) => extensions.get(format);\n\nexport const KeyForm = ({\n isSaml = false,\n hasPem = false,\n useFile = false,\n}: KeyFormProps) => {\n const { t } = useTranslation(\"clients\");\n\n const [filename, setFilename] = useState();\n const [openArchiveFormat, setOpenArchiveFormat] = useState(false);\n\n const { control, watch } = useFormContext();\n const format = watch(\"format\");\n\n const { cryptoInfo } = useServerInfo();\n const supportedKeystoreTypes = [\n ...(cryptoInfo?.supportedKeystoreTypes ?? []),\n ...(hasPem ? [CERT_PEM] : []),\n ];\n\n return (\n
\n \n }\n fieldId=\"archiveFormat\"\n >\n (\n {\n field.onChange(value.toString());\n setOpenArchiveFormat(false);\n }}\n selections={field.value}\n variant={SelectVariant.single}\n aria-label={t(\"archiveFormat\")}\n isOpen={openArchiveFormat}\n menuAppendTo=\"parent\"\n >\n {supportedKeystoreTypes.map((option) => (\n \n ))}\n \n )}\n />\n \n {useFile && (\n \n }\n fieldId=\"importFile\"\n >\n (\n {\n setFilename(filename);\n field.onChange(value);\n }}\n />\n )}\n />\n \n )}\n {format !== CERT_PEM && (\n \n )}\n \n );\n};\n\nexport const GenerateKeyDialog = ({\n clientId,\n save,\n toggleDialog,\n}: GenerateKeyDialogProps) => {\n const { t } = useTranslation(\"clients\");\n const form = useForm({\n defaultValues: { keyAlias: clientId },\n mode: \"onChange\",\n });\n\n const {\n handleSubmit,\n formState: { isValid },\n } = form;\n\n return (\n {\n handleSubmit((config) => {\n save(config);\n toggleDialog();\n })();\n }}\n >\n {t(\"generate\")}\n ,\n {\n toggleDialog();\n }}\n >\n {t(\"common:cancel\")}\n ,\n ]}\n >\n \n {t(\"clients-help:generateKeysDescription\")}\n \n \n \n \n \n );\n};\n","import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Controller, FormProvider, useForm, useWatch } from \"react-hook-form\";\nimport {\n Button,\n ButtonVariant,\n Form,\n FormGroup,\n Modal,\n ModalVariant,\n Select,\n SelectOption,\n SelectVariant,\n Text,\n TextContent,\n} from \"@patternfly/react-core\";\nimport { HelpItem } from \"ui-shared\";\nimport { StoreSettings } from \"./StoreSettings\";\nimport { FileUpload } from \"../../components/json-file-upload/patternfly/FileUpload\";\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\n\ntype ImportKeyDialogProps = {\n toggleDialog: () => void;\n save: (importFile: ImportFile) => void;\n};\n\nexport type ImportFile = {\n keystoreFormat: string;\n keyAlias: string;\n storePassword: string;\n file: { value?: string; filename: string };\n};\n\nexport const ImportKeyDialog = ({\n save,\n toggleDialog,\n}: ImportKeyDialogProps) => {\n const { t } = useTranslation(\"clients\");\n const form = useForm();\n const { control, handleSubmit } = form;\n\n const [openArchiveFormat, setOpenArchiveFormat] = useState(false);\n\n const baseFormats = useServerInfo().cryptoInfo?.supportedKeystoreTypes ?? [];\n\n const formats = baseFormats.concat([\n \"Certificate PEM\",\n \"Public Key PEM\",\n \"JSON Web Key Set\",\n ]);\n\n const format = useWatch({\n control,\n name: \"keystoreFormat\",\n defaultValue: formats[0],\n });\n\n return (\n {\n handleSubmit((importFile) => {\n save(importFile);\n toggleDialog();\n })();\n }}\n >\n {t(\"import\")}\n ,\n {\n toggleDialog();\n }}\n >\n {t(\"common:cancel\")}\n ,\n ]}\n >\n \n {t(\"clients-help:generateKeysDescription\")}\n \n
\n \n }\n fieldId=\"archiveFormat\"\n >\n (\n {\n field.onChange(value as string);\n setOpenArchiveFormat(false);\n }}\n selections={field.value}\n variant={SelectVariant.single}\n aria-label={t(\"archiveFormat\")}\n isOpen={openArchiveFormat}\n >\n {formats.map((option) => (\n \n ))}\n \n )}\n />\n \n {baseFormats.includes(format) && (\n \n \n \n )}\n \n (\n \n field.onChange({ value, filename })\n }\n />\n )}\n />\n \n \n \n );\n};\n","import type CertificateRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/certificateRepresentation\";\nimport type KeyStoreConfig from \"@keycloak/keycloak-admin-client/lib/defs/keystoreConfig\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n Card,\n CardBody,\n CardHeader,\n CardTitle,\n FormGroup,\n PageSection,\n Switch,\n Text,\n TextContent,\n} from \"@patternfly/react-core\";\nimport { saveAs } from \"file-saver\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { KeycloakTextInput } from \"../../components/keycloak-text-input/KeycloakTextInput\";\nimport { convertAttributeNameToForm } from \"../../util\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport useToggle from \"../../utils/useToggle\";\nimport { FormFields } from \"../ClientDetails\";\nimport { Certificate } from \"./Certificate\";\nimport { GenerateKeyDialog, getFileExtension } from \"./GenerateKeyDialog\";\nimport { ImportFile, ImportKeyDialog } from \"./ImportKeyDialog\";\n\ntype KeysProps = {\n save: () => void;\n clientId: string;\n hasConfigureAccess?: boolean;\n};\n\nconst attr = \"jwt.credential\";\n\nexport const Keys = ({ clientId, save, hasConfigureAccess }: KeysProps) => {\n const { t } = useTranslation(\"clients\");\n const {\n control,\n register,\n getValues,\n formState: { isDirty },\n } = useFormContext();\n const { addAlert, addError } = useAlerts();\n\n const [keyInfo, setKeyInfo] = useState();\n const [openGenerateKeys, toggleOpenGenerateKeys, setOpenGenerateKeys] =\n useToggle();\n const [openImportKeys, toggleOpenImportKeys, setOpenImportKeys] = useToggle();\n const [key, setKey] = useState(0);\n const refresh = () => setKey(key + 1);\n\n const useJwksUrl = useWatch({\n control,\n name: convertAttributeNameToForm(\"attributes.use.jwks.url\"),\n defaultValue: \"false\",\n });\n\n useFetch(\n () => adminClient.clients.getKeyInfo({ id: clientId, attr }),\n (info) => setKeyInfo(info),\n [key],\n );\n\n const generate = async (config: KeyStoreConfig) => {\n try {\n const keyStore = await adminClient.clients.generateAndDownloadKey(\n {\n id: clientId,\n attr,\n },\n config,\n );\n saveAs(\n new Blob([keyStore], { type: \"application/octet-stream\" }),\n `keystore.${getFileExtension(config.format ?? \"\")}`,\n );\n addAlert(t(\"generateSuccess\"), AlertVariant.success);\n refresh();\n } catch (error) {\n addError(\"clients:generateError\", error);\n }\n };\n\n const importKey = async (importFile: ImportFile) => {\n try {\n const formData = new FormData();\n const { file, ...rest } = importFile;\n\n for (const [key, value] of Object.entries(rest)) {\n formData.append(key, value);\n }\n\n formData.append(\"file\", file.value!);\n\n await adminClient.clients.uploadCertificate(\n { id: clientId, attr },\n formData,\n );\n addAlert(t(\"importSuccess\"), AlertVariant.success);\n refresh();\n } catch (error) {\n addError(\"clients:importError\", error);\n }\n };\n\n return (\n \n {openGenerateKeys && (\n \n )}\n {openImportKeys && (\n \n )}\n \n \n {t(\"jwksUrlConfig\")}\n \n \n \n {t(\"keysIntro\")}\n \n \n \n \n \n }\n >\n (\n field.onChange(`${value}`)}\n aria-label={t(\"useJwksUrl\")}\n />\n )}\n />\n \n {useJwksUrl !== \"true\" &&\n (keyInfo ? (\n \n ) : (\n \"No client certificate configured\"\n ))}\n {useJwksUrl === \"true\" && (\n \n }\n >\n \n \n )}\n \n \n {t(\"common:save\")}\n \n setOpenGenerateKeys(true)}\n >\n {t(\"generateNewKeys\")}\n \n setOpenImportKeys(true)}\n isDisabled={useJwksUrl === \"true\"}\n >\n {t(\"import\")}\n \n \n \n \n \n \n );\n};\n","import KeyStoreConfig from \"@keycloak/keycloak-admin-client/lib/defs/keystoreConfig\";\nimport { Button, Form, Modal } from \"@patternfly/react-core\";\nimport { saveAs } from \"file-saver\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { KeyForm, getFileExtension } from \"./GenerateKeyDialog\";\n\ntype ExportSamlKeyDialogProps = {\n clientId: string;\n close: () => void;\n};\n\nexport const ExportSamlKeyDialog = ({\n clientId,\n close,\n}: ExportSamlKeyDialogProps) => {\n const { t } = useTranslation(\"clients\");\n const { realm } = useRealm();\n\n const { addAlert, addError } = useAlerts();\n\n const form = useForm({\n defaultValues: { realmAlias: realm },\n });\n\n const download = async (config: KeyStoreConfig) => {\n try {\n const keyStore = await adminClient.clients.downloadKey(\n {\n id: clientId,\n attr: \"saml.signing\",\n },\n config,\n );\n saveAs(\n new Blob([keyStore], { type: \"application/octet-stream\" }),\n `keystore.${getFileExtension(config.format ?? \"\")}`,\n );\n addAlert(t(\"samlKeysExportSuccess\"));\n close();\n } catch (error) {\n addError(\"clients:samlKeysExportError\", error);\n }\n };\n\n return (\n \n {t(\"common:export\")}\n ,\n {\n close();\n }}\n >\n {t(\"common:cancel\")}\n ,\n ]}\n >\n \n \n \n \n \n \n );\n};\n","import type CertificateRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/certificateRepresentation\";\nimport type KeyStoreConfig from \"@keycloak/keycloak-admin-client/lib/defs/keystoreConfig\";\nimport {\n AlertVariant,\n Button,\n ButtonVariant,\n Flex,\n FlexItem,\n Form,\n FormGroup,\n Modal,\n ModalVariant,\n Radio,\n Split,\n SplitItem,\n Text,\n TextContent,\n Title,\n} from \"@patternfly/react-core\";\nimport { saveAs } from \"file-saver\";\nimport { useState } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { Certificate } from \"./Certificate\";\nimport { KeyForm } from \"./GenerateKeyDialog\";\nimport type { KeyTypes } from \"./SamlKeys\";\n\ntype SamlKeysDialogProps = {\n id: string;\n attr: KeyTypes;\n onClose: () => void;\n onCancel: () => void;\n};\n\nexport type SamlKeysDialogForm = KeyStoreConfig & {\n file: File;\n};\n\nexport const submitForm = async (\n form: SamlKeysDialogForm,\n id: string,\n attr: KeyTypes,\n callback: (error?: unknown) => void,\n) => {\n try {\n const formData = new FormData();\n const { file, ...rest } = form;\n Object.entries(rest).map(([key, value]) =>\n formData.append(\n key === \"format\" ? \"keystoreFormat\" : key,\n value.toString(),\n ),\n );\n formData.append(\"file\", file);\n\n await adminClient.clients.uploadKey({ id, attr }, formData);\n callback();\n } catch (error) {\n callback(error);\n }\n};\n\nexport const SamlKeysDialog = ({\n id,\n attr,\n onClose,\n onCancel,\n}: SamlKeysDialogProps) => {\n const { t } = useTranslation(\"clients\");\n const [type, setType] = useState(false);\n const [keys, setKeys] = useState();\n const form = useForm({ mode: \"onChange\" });\n const {\n handleSubmit,\n formState: { isValid },\n } = form;\n\n const { addAlert, addError } = useAlerts();\n\n const submit = (form: SamlKeysDialogForm) => {\n submitForm(form, id, attr, (error) => {\n if (error) {\n addError(\"clients:importError\", error);\n } else {\n addAlert(t(\"importSuccess\"), AlertVariant.success);\n }\n });\n };\n\n const generate = async () => {\n try {\n const key = await adminClient.clients.generateKey({\n id,\n attr,\n });\n setKeys(key);\n saveAs(\n new Blob([key.privateKey!], {\n type: \"application/octet-stream\",\n }),\n \"private.key\",\n );\n\n addAlert(t(\"generateSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"clients:generateError\", error);\n }\n };\n\n return (\n \n {t(\"enableClientSignatureRequired\")}\n {t(\"enableClientSignatureRequiredExplain\")}\n \n }\n isOpen={true}\n onClose={onClose}\n actions={[\n {\n if (type) {\n handleSubmit(submit)();\n }\n onClose();\n }}\n >\n {t(\"confirm\")}\n ,\n \n {t(\"common:cancel\")}\n ,\n ]}\n >\n \n
\n \n \n \n setType(false)}\n label={t(\"selectMethodType.generate\")}\n id=\"selectMethodType-generate\"\n />\n \n \n setType(true)}\n label={t(\"selectMethodType.import\")}\n id=\"selectMethodType-import\"\n />\n \n \n \n {!type && (\n \n }\n >\n \n \n \n \n \n \n {t(\"generate\")}\n \n \n \n \n )}\n \n {type && }\n
\n \n );\n};\n","import { AlertVariant } from \"@patternfly/react-core\";\nimport { FormProvider, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { ConfirmDialogModal } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { KeyForm } from \"./GenerateKeyDialog\";\nimport type { KeyTypes } from \"./SamlKeys\";\nimport { SamlKeysDialogForm, submitForm } from \"./SamlKeysDialog\";\n\ntype SamlImportKeyDialogProps = {\n id: string;\n attr: KeyTypes;\n onClose: () => void;\n};\n\nexport const SamlImportKeyDialog = ({\n id,\n attr,\n onClose,\n}: SamlImportKeyDialogProps) => {\n const { t } = useTranslation(\"clients\");\n const form = useFormContext();\n const { handleSubmit } = form;\n\n const { addAlert, addError } = useAlerts();\n\n const submit = (form: SamlKeysDialogForm) => {\n submitForm(form, id, attr, (error) => {\n if (error) {\n addError(\"clients:importError\", error);\n } else {\n addAlert(t(\"importSuccess\"), AlertVariant.success);\n }\n });\n };\n\n return (\n {\n handleSubmit(submit)();\n onClose();\n }}\n >\n \n \n \n \n );\n};\n","import type CertificateRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/certificateRepresentation\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n Card,\n CardBody,\n Form,\n FormGroup,\n PageSection,\n Switch,\n Text,\n TextContent,\n} from \"@patternfly/react-core\";\nimport { saveAs } from \"file-saver\";\nimport { Fragment, useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { FormPanel } from \"../../components/scroll-form/FormPanel\";\nimport { convertAttributeNameToForm } from \"../../util\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport useToggle from \"../../utils/useToggle\";\nimport { FormFields } from \"../ClientDetails\";\nimport { Certificate } from \"./Certificate\";\nimport { ExportSamlKeyDialog } from \"./ExportSamlKeyDialog\";\nimport { SamlImportKeyDialog } from \"./SamlImportKeyDialog\";\nimport { SamlKeysDialog } from \"./SamlKeysDialog\";\n\ntype SamlKeysProps = {\n clientId: string;\n save: () => void;\n};\n\nconst KEYS = [\"saml.signing\", \"saml.encryption\"] as const;\nexport type KeyTypes = (typeof KEYS)[number];\n\nconst KEYS_MAPPING: { [key in KeyTypes]: { [index: string]: string } } = {\n \"saml.signing\": {\n name: convertAttributeNameToForm(\"attributes.saml.client.signature\"),\n title: \"signingKeysConfig\",\n key: \"clientSignature\",\n },\n \"saml.encryption\": {\n name: convertAttributeNameToForm(\"attributes.saml.encrypt\"),\n title: \"encryptionKeysConfig\",\n key: \"encryptAssertions\",\n },\n};\n\ntype KeySectionProps = {\n clientId: string;\n keyInfo?: CertificateRepresentation;\n attr: KeyTypes;\n onChanged: (key: KeyTypes) => void;\n onGenerate: (key: KeyTypes, regenerate: boolean) => void;\n onImport: (key: KeyTypes) => void;\n};\n\nconst KeySection = ({\n clientId,\n keyInfo,\n attr,\n onChanged,\n onGenerate,\n onImport,\n}: KeySectionProps) => {\n const { t } = useTranslation(\"clients\");\n const { control, watch } = useFormContext();\n const title = KEYS_MAPPING[attr].title;\n const key = KEYS_MAPPING[attr].key;\n const name = KEYS_MAPPING[attr].name;\n\n const [showImportDialog, toggleImportDialog] = useToggle();\n\n const section = watch(name as keyof FormFields);\n return (\n <>\n {showImportDialog && (\n \n )}\n \n \n {t(`${title}Explain`)}\n \n \n \n }\n label={t(key)}\n fieldId={key}\n hasNoPaddingTop\n >\n (\n {\n const v = value.toString();\n if (v === \"true\") {\n onChanged(attr);\n field.onChange(v);\n } else {\n onGenerate(attr, false);\n }\n }}\n aria-label={t(key)}\n />\n )}\n />\n \n \n \n {keyInfo?.certificate && section === \"true\" && (\n \n \n
\n \n \n onGenerate(attr, true)}\n >\n {t(\"regenerate\")}\n \n \n \n \n \n
\n
\n )}\n \n );\n};\n\nexport const SamlKeys = ({ clientId, save }: SamlKeysProps) => {\n const { t } = useTranslation(\"clients\");\n const [isChanged, setIsChanged] = useState();\n const [keyInfo, setKeyInfo] = useState();\n const [selectedType, setSelectedType] = useState();\n const [openImport, setImportOpen] = useState();\n const [refresh, setRefresh] = useState(0);\n\n const { setValue } = useFormContext();\n const { addAlert, addError } = useAlerts();\n\n useFetch(\n () =>\n Promise.all(\n KEYS.map((attr) =>\n adminClient.clients.getKeyInfo({ id: clientId, attr }),\n ),\n ),\n (info) => setKeyInfo(info),\n [refresh],\n );\n\n const generate = async (attr: KeyTypes) => {\n const index = KEYS.indexOf(attr);\n try {\n const info = [...(keyInfo || [])];\n info[index] = await adminClient.clients.generateKey({\n id: clientId,\n attr,\n });\n\n setKeyInfo(info);\n saveAs(\n new Blob([info[index].privateKey!], {\n type: \"application/octet-stream\",\n }),\n \"private.key\",\n );\n\n addAlert(t(\"generateSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"clients:generateError\", error);\n }\n };\n\n const key = selectedType ? KEYS_MAPPING[selectedType].key : \"\";\n const [toggleDisableDialog, DisableConfirm] = useConfirmDialog({\n titleKey: t(\"disableSigning\", {\n key: t(key),\n }),\n messageKey: t(\"disableSigningExplain\", {\n key: t(key),\n }),\n continueButtonLabel: \"common:yes\",\n cancelButtonLabel: \"common:no\",\n onConfirm: () => {\n setValue(KEYS_MAPPING[selectedType!].name, \"false\");\n save();\n },\n });\n\n const [toggleReGenerateDialog, ReGenerateConfirm] = useConfirmDialog({\n titleKey: \"clients:reGenerateSigning\",\n messageKey: \"clients:reGenerateSigningExplain\",\n continueButtonLabel: \"common:yes\",\n cancelButtonLabel: \"common:no\",\n onConfirm: () => {\n generate(selectedType!);\n },\n });\n\n return (\n \n {isChanged && (\n {\n setIsChanged(undefined);\n save();\n setRefresh(refresh + 1);\n }}\n onCancel={() => {\n setValue(KEYS_MAPPING[selectedType!].name, \"false\");\n setIsChanged(undefined);\n }}\n />\n )}\n \n \n {KEYS.map((attr, index) => (\n \n {openImport === attr && (\n setImportOpen(undefined)}\n />\n )}\n {\n setSelectedType(type);\n if (!isNew) {\n toggleDisableDialog();\n } else {\n toggleReGenerateDialog();\n }\n }}\n onImport={() => setImportOpen(attr)}\n />\n \n ))}\n \n );\n};\n","import type ClientScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientScopeRepresentation\";\nimport {\n AlertVariant,\n Button,\n ButtonVariant,\n Dropdown,\n DropdownItem,\n KebabToggle,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { ChangeTypeDropdown } from \"../../client-scopes/ChangeTypeDropdown\";\nimport {\n SearchDropdown,\n SearchToolbar,\n SearchType,\n nameFilter,\n typeFilter,\n} from \"../../client-scopes/details/SearchFilter\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport {\n AllClientScopeType,\n AllClientScopes,\n CellDropdown,\n ClientScope,\n addClientScope,\n changeClientScope,\n removeClientScope,\n} from \"../../components/client-scope/ClientScopeTypes\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { ListEmptyState } from \"../../components/list-empty-state/ListEmptyState\";\nimport {\n Action,\n KeycloakDataTable,\n} from \"../../components/table-toolbar/KeycloakDataTable\";\nimport { useAccess } from \"../../context/access/Access\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport useLocaleSort, { mapByKey } from \"../../utils/useLocaleSort\";\nimport { toDedicatedScope } from \"../routes/DedicatedScopeDetails\";\nimport { AddScopeDialog } from \"./AddScopeDialog\";\n\nimport \"./client-scopes.css\";\n\nexport type ClientScopesProps = {\n clientId: string;\n protocol: string;\n clientName: string;\n fineGrainedAccess?: boolean;\n};\n\nexport type Row = ClientScopeRepresentation & {\n type: AllClientScopeType;\n description?: string;\n};\n\nconst DEDICATED_ROW = \"dedicated\";\n\ntype TypeSelectorProps = Row & {\n clientId: string;\n fineGrainedAccess?: boolean;\n refresh: () => void;\n};\n\nconst TypeSelector = ({\n clientId,\n refresh,\n fineGrainedAccess,\n ...scope\n}: TypeSelectorProps) => {\n const { t } = useTranslation(\"clients\");\n const { addAlert, addError } = useAlerts();\n\n const { hasAccess } = useAccess();\n\n const isDedicatedRow = (value: Row) => value.id === DEDICATED_ROW;\n const isManager = hasAccess(\"manage-clients\") || fineGrainedAccess;\n\n return (\n {\n try {\n await changeClientScope(\n clientId,\n scope,\n scope.type,\n value as ClientScope,\n );\n addAlert(t(\"clientScopeSuccess\"), AlertVariant.success);\n refresh();\n } catch (error) {\n addError(\"clients:clientScopeError\", error);\n }\n }}\n />\n );\n};\n\nexport const ClientScopes = ({\n clientId,\n protocol,\n clientName,\n fineGrainedAccess,\n}: ClientScopesProps) => {\n const { t } = useTranslation(\"clients\");\n const { addAlert, addError } = useAlerts();\n const { realm } = useRealm();\n const localeSort = useLocaleSort();\n\n const [searchType, setSearchType] = useState(\"name\");\n\n const [searchTypeType, setSearchTypeType] = useState(\n AllClientScopes.none,\n );\n\n const [addDialogOpen, setAddDialogOpen] = useState(false);\n\n const [rest, setRest] = useState();\n const [selectedRows, setSelectedRowState] = useState([]);\n const setSelectedRows = (rows: Row[]) =>\n setSelectedRowState(rows.filter(({ id }) => id !== DEDICATED_ROW));\n const [kebabOpen, setKebabOpen] = useState(false);\n\n const [key, setKey] = useState(0);\n const refresh = () => setKey(key + 1);\n const isDedicatedRow = (value: Row) => value.id === DEDICATED_ROW;\n\n const { hasAccess } = useAccess();\n const isManager = hasAccess(\"manage-clients\") || fineGrainedAccess;\n const isViewer = hasAccess(\"view-clients\") || fineGrainedAccess;\n\n const loader = async (first?: number, max?: number, search?: string) => {\n const defaultClientScopes =\n await adminClient.clients.listDefaultClientScopes({ id: clientId });\n const optionalClientScopes =\n await adminClient.clients.listOptionalClientScopes({ id: clientId });\n const clientScopes = await adminClient.clientScopes.find();\n\n const find = (id: string) =>\n clientScopes.find((clientScope) => id === clientScope.id);\n\n const optional = optionalClientScopes.map((c) => {\n const scope = find(c.id!);\n const row: Row = {\n ...c,\n type: ClientScope.optional,\n description: scope?.description,\n };\n return row;\n });\n\n const defaultScopes = defaultClientScopes.map((c) => {\n const scope = find(c.id!);\n const row: Row = {\n ...c,\n type: ClientScope.default,\n description: scope?.description,\n };\n return row;\n });\n\n const rows = [...optional, ...defaultScopes];\n const names = rows.map((row) => row.name);\n setRest(\n clientScopes\n .filter((scope) => !names.includes(scope.name))\n .filter((scope) => scope.protocol === protocol),\n );\n\n const filter =\n searchType === \"name\" ? nameFilter(search) : typeFilter(searchTypeType);\n const firstNum = Number(first);\n const page = localeSort(rows.filter(filter), mapByKey(\"name\"));\n\n if (isViewer) {\n page.unshift({\n id: DEDICATED_ROW,\n name: t(\"dedicatedScopeName\", { clientName }),\n type: AllClientScopes.none,\n description: t(\"dedicatedScopeDescription\"),\n });\n }\n\n return page.slice(firstNum, firstNum + Number(max));\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: t(\"client-scopes:deleteClientScope\", {\n count: selectedRows.length,\n name: selectedRows[0]?.name,\n }),\n messageKey: \"client-scopes:deleteConfirm\",\n continueButtonLabel: \"common:delete\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n await removeClientScope(\n clientId,\n selectedRows[0],\n selectedRows[0].type as ClientScope,\n );\n addAlert(t(\"clientScopeRemoveSuccess\"), AlertVariant.success);\n refresh();\n } catch (error) {\n addError(\"clients:clientScopeRemoveError\", error);\n }\n },\n });\n\n return (\n <>\n {rest && (\n setAddDialogOpen(!addDialogOpen)}\n onAdd={async (scopes) => {\n try {\n await Promise.all(\n scopes.map(\n async (scope) =>\n await addClientScope(clientId, scope.scope, scope.type!),\n ),\n );\n addAlert(t(\"clientScopeSuccess\"), AlertVariant.success);\n refresh();\n } catch (error) {\n addError(\"clients:clientScopeError\", error);\n }\n }}\n />\n )}\n\n setSelectedRows([...rows])}\n searchTypeComponent={\n setSearchType(searchType)}\n />\n }\n toolbarItem={\n <>\n setSearchType(searchType)}\n onType={(value) => {\n setSearchTypeType(value);\n refresh();\n }}\n />\n {isManager && (\n <>\n \n \n \n \n \n \n \n \n setKebabOpen(!kebabOpen)} />\n }\n isOpen={kebabOpen}\n isPlain\n dropdownItems={[\n {\n try {\n await Promise.all(\n selectedRows.map((row) =>\n removeClientScope(\n clientId,\n { ...row },\n row.type as ClientScope,\n ),\n ),\n );\n\n setKebabOpen(false);\n setSelectedRows([]);\n addAlert(t(\"clients:clientScopeRemoveSuccess\"));\n refresh();\n } catch (error) {\n addError(\"clients:clientScopeRemoveError\", error);\n }\n }}\n >\n {t(\"common:remove\")}\n ,\n ]}\n />\n \n \n )}\n \n }\n columns={[\n {\n name: \"name\",\n displayKey: \"clients:assignedClientScope\",\n cellRenderer: (row) => {\n if (isDedicatedRow(row)) {\n return (\n \n {row.name}\n \n );\n }\n return row.name!;\n },\n },\n {\n name: \"type\",\n displayKey: \"clients:assignedType\",\n cellRenderer: (row) => (\n \n ),\n },\n { name: \"description\" },\n ]}\n actions={\n isManager\n ? [\n {\n title: t(\"common:remove\"),\n onRowClick: async (row) => {\n setSelectedRows([row]);\n toggleDeleteDialog();\n return true;\n },\n } as Action,\n ]\n : []\n }\n emptyState={\n setAddDialogOpen(true)}\n />\n }\n />\n \n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport {\n CodeBlock,\n CodeBlockAction,\n EmptyState,\n EmptyStateBody,\n Title,\n} from \"@patternfly/react-core\";\n\nimport type UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport { CopyToClipboardButton } from \"./CopyToClipboardButton\";\nimport { KeycloakTextArea } from \"../../components/keycloak-text-area/KeycloakTextArea\";\n\ntype GeneratedCodeTabProps = {\n user?: UserRepresentation;\n text: string;\n label: string;\n};\n\nexport const GeneratedCodeTab = ({\n text,\n user,\n label,\n}: GeneratedCodeTabProps) => {\n const { t } = useTranslation(\"clients\");\n\n return user ? (\n \n \n \n }\n >\n \n \n ) : (\n \n \n {t(`${label}No`)}\n \n {t(`${label}IsDisabled`)}\n \n );\n};\n","import type ClientScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientScopeRepresentation\";\nimport type ProtocolMapperRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/protocolMapperRepresentation\";\nimport type RoleRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/roleRepresentation\";\nimport type { ProtocolMapperTypeRepresentation } from \"@keycloak/keycloak-admin-client/lib/defs/serverInfoRepesentation\";\nimport {\n ClipboardCopy,\n Form,\n FormGroup,\n Grid,\n GridItem,\n PageSection,\n Select,\n SelectOption,\n SelectVariant,\n Split,\n SplitItem,\n Tab,\n TabContent,\n Tabs,\n TabTitleText,\n Text,\n TextContent,\n} from \"@patternfly/react-core\";\nimport { QuestionCircleIcon } from \"@patternfly/react-icons\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem, useHelp } from \"ui-shared\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { KeycloakDataTable } from \"../../components/table-toolbar/KeycloakDataTable\";\nimport { UserSelect } from \"../../components/users/UserSelect\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\nimport { prettyPrintJSON } from \"../../util\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport { GeneratedCodeTab } from \"./GeneratedCodeTab\";\nimport { useAccess } from \"../../context/access/Access\";\n\nimport \"./evaluate.css\";\n\nexport type EvaluateScopesProps = {\n clientId: string;\n protocol: string;\n};\n\nconst ProtocolMappers = ({\n protocolMappers,\n}: {\n protocolMappers: ProtocolMapperRepresentation[];\n}) => {\n const [key, setKey] = useState(0);\n useEffect(() => {\n setKey(key + 1);\n }, [protocolMappers]);\n return (\n Promise.resolve(protocolMappers)}\n ariaLabelKey=\"clients:effectiveProtocolMappers\"\n searchPlaceholderKey=\"clients:searchForProtocol\"\n columns={[\n {\n name: \"mapperName\",\n displayKey: \"common:name\",\n },\n {\n name: \"containerName\",\n displayKey: \"clients:parentClientScope\",\n },\n {\n name: \"type.category\",\n displayKey: \"common:category\",\n },\n {\n name: \"type.priority\",\n displayKey: \"common:priority\",\n },\n ]}\n />\n );\n};\n\nconst EffectiveRoles = ({\n effectiveRoles,\n}: {\n effectiveRoles: RoleRepresentation[];\n}) => {\n const [key, setKey] = useState(0);\n useEffect(() => {\n setKey(key + 1);\n }, [effectiveRoles]);\n\n return (\n Promise.resolve(effectiveRoles)}\n ariaLabelKey=\"client:effectiveRoleScopeMappings\"\n searchPlaceholderKey=\"clients:searchForRole\"\n columns={[\n {\n name: \"name\",\n displayKey: \"clients:role\",\n },\n {\n name: \"containerId\",\n displayKey: \"clients:origin\",\n },\n ]}\n />\n );\n};\n\nexport const EvaluateScopes = ({ clientId, protocol }: EvaluateScopesProps) => {\n const prefix = \"openid\";\n const { t } = useTranslation(\"clients\");\n const { enabled } = useHelp();\n const { realm } = useRealm();\n const mapperTypes = useServerInfo().protocolMapperTypes![protocol];\n\n const [selectableScopes, setSelectableScopes] = useState<\n ClientScopeRepresentation[]\n >([]);\n const [isScopeOpen, setIsScopeOpen] = useState(false);\n const [selected, setSelected] = useState([prefix]);\n const [activeTab, setActiveTab] = useState(0);\n\n const [key, setKey] = useState(\"\");\n const refresh = () => setKey(`${new Date().getTime()}`);\n const [effectiveRoles, setEffectiveRoles] = useState(\n [],\n );\n const [protocolMappers, setProtocolMappers] = useState<\n ProtocolMapperRepresentation[]\n >([]);\n const [accessToken, setAccessToken] = useState(\"\");\n const [userInfo, setUserInfo] = useState(\"\");\n const [idToken, setIdToken] = useState(\"\");\n\n const tabContent1 = useRef(null);\n const tabContent2 = useRef(null);\n const tabContent3 = useRef(null);\n const tabContent4 = useRef(null);\n const tabContent5 = useRef(null);\n\n const form = useForm();\n\n const { hasAccess } = useAccess();\n const hasViewUsers = hasAccess(\"view-users\");\n\n useFetch(\n () => adminClient.clients.listOptionalClientScopes({ id: clientId }),\n (optionalClientScopes) => setSelectableScopes(optionalClientScopes),\n [],\n );\n\n useFetch(\n async () => {\n const scope = selected.join(\" \");\n const effectiveRoles = await adminClient.clients.evaluatePermission({\n id: clientId,\n roleContainer: realm,\n scope,\n type: \"granted\",\n });\n\n const mapperList = (await adminClient.clients.evaluateListProtocolMapper({\n id: clientId,\n scope,\n })) as ({\n type: ProtocolMapperTypeRepresentation;\n } & ProtocolMapperRepresentation)[];\n\n return {\n mapperList,\n effectiveRoles,\n };\n },\n ({ mapperList, effectiveRoles }) => {\n setEffectiveRoles(effectiveRoles);\n mapperList.map((mapper) => {\n mapper.type = mapperTypes.filter(\n (type) => type.id === mapper.protocolMapper,\n )[0];\n });\n\n setProtocolMappers(mapperList);\n refresh();\n },\n [selected],\n );\n\n useFetch(\n async () => {\n const scope = selected.join(\" \");\n const user = form.getValues(\"user\");\n if (!user) return [];\n\n return await Promise.all([\n adminClient.clients.evaluateGenerateAccessToken({\n id: clientId,\n userId: user[0],\n scope,\n }),\n adminClient.clients.evaluateGenerateUserInfo({\n id: clientId,\n userId: user[0],\n scope,\n }),\n adminClient.clients.evaluateGenerateIdToken({\n id: clientId,\n userId: user[0],\n scope,\n }),\n ]);\n },\n ([accessToken, userInfo, idToken]) => {\n setAccessToken(prettyPrintJSON(accessToken));\n setUserInfo(prettyPrintJSON(userInfo));\n setIdToken(prettyPrintJSON(idToken));\n },\n [form.getValues(\"user\"), selected],\n );\n\n return (\n <>\n \n {enabled && (\n \n \n {t(\"clients-help:evaluateExplain\")}\n \n \n )}\n
\n \n }\n >\n \n \n setIsScopeOpen(!isScopeOpen)}\n isOpen={isScopeOpen}\n selections={selected}\n onSelect={(_, value) => {\n const option = value as string;\n if (selected.includes(option)) {\n if (option !== prefix) {\n setSelected(selected.filter((item) => item !== option));\n }\n } else {\n setSelected([...selected, option]);\n }\n }}\n aria-labelledby={t(\"scopeParameter\")}\n placeholderText={t(\"scopeParameterPlaceholder\")}\n >\n {selectableScopes.map((option, index) => (\n \n ))}\n \n \n \n \n {selected.join(\" \")}\n \n \n \n \n {hasViewUsers && (\n \n \n \n )}\n \n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n setActiveTab(key as number)}\n >\n \n {t(\"effectiveProtocolMappers\")}{\" \"}\n \n \n }\n tabContentRef={tabContent1}\n />\n \n {t(\"effectiveRoleScopeMappings\")}{\" \"}\n \n \n }\n tabContentRef={tabContent2}\n >\n \n {t(\"generatedAccessToken\")}{\" \"}\n \n \n }\n tabContentRef={tabContent3}\n />\n \n {t(\"generatedIdToken\")}{\" \"}\n \n \n }\n tabContentRef={tabContent4}\n />\n \n {t(\"generatedUserInfo\")}{\" \"}\n \n \n }\n tabContentRef={tabContent5}\n />\n \n \n \n \n );\n};\n","import type ClientRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientRepresentation\";\nimport type { RoleMappingPayload } from \"@keycloak/keycloak-admin-client/lib/defs/roleRepresentation\";\nimport type UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport { AlertVariant, PageSection } from \"@patternfly/react-core\";\nimport { InfoCircleIcon } from \"@patternfly/react-icons\";\nimport { useState } from \"react\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { KeycloakSpinner } from \"../../components/keycloak-spinner/KeycloakSpinner\";\nimport { RoleMapping, Row } from \"../../components/role-mapping/RoleMapping\";\nimport { useAccess } from \"../../context/access/Access\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { toUser } from \"../../user/routes/User\";\nimport { useFetch } from \"../../utils/useFetch\";\n\nimport \"./service-account.css\";\n\ntype ServiceAccountProps = {\n client: ClientRepresentation;\n};\n\nexport const ServiceAccount = ({ client }: ServiceAccountProps) => {\n const { t } = useTranslation(\"clients\");\n const { addAlert, addError } = useAlerts();\n const { realm } = useRealm();\n\n const [serviceAccount, setServiceAccount] = useState();\n\n const { hasAccess } = useAccess();\n const hasManageClients = hasAccess(\"manage-clients\");\n\n useFetch(\n () =>\n adminClient.clients.getServiceAccountUser({\n id: client.id!,\n }),\n (serviceAccount) => setServiceAccount(serviceAccount),\n [],\n );\n\n const assignRoles = async (rows: Row[]) => {\n try {\n const realmRoles = rows\n .filter((row) => row.client === undefined)\n .map((row) => row.role as RoleMappingPayload)\n .flat();\n await adminClient.users.addRealmRoleMappings({\n id: serviceAccount?.id!,\n roles: realmRoles,\n });\n await Promise.all(\n rows\n .filter((row) => row.client !== undefined)\n .map((row) =>\n adminClient.users.addClientRoleMappings({\n id: serviceAccount?.id!,\n clientUniqueId: row.client!.id!,\n roles: [row.role as RoleMappingPayload],\n }),\n ),\n );\n addAlert(t(\"roleMappingUpdatedSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"clients:roleMappingUpdatedError\", error);\n }\n };\n return serviceAccount ? (\n <>\n \n \n \n \n {\"\"}\n \n {{ link: serviceAccount.username }}\n \n \n \n \n \n \n ) : (\n \n );\n};\n","import type ClientRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientRepresentation\";\nimport {\n AlertVariant,\n ButtonVariant,\n Divider,\n DropdownItem,\n Label,\n PageSection,\n Tab,\n TabTitleText,\n Tooltip,\n} from \"@patternfly/react-core\";\nimport { InfoCircleIcon } from \"@patternfly/react-icons\";\nimport { cloneDeep, sortBy } from \"lodash-es\";\nimport { useMemo, useState } from \"react\";\nimport { Controller, FormProvider, useForm, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport {\n ConfirmDialogModal,\n useConfirmDialog,\n} from \"../components/confirm-dialog/ConfirmDialog\";\nimport { DownloadDialog } from \"../components/download-dialog/DownloadDialog\";\nimport type { KeyValueType } from \"../components/key-value-form/key-value-convert\";\nimport { KeycloakSpinner } from \"../components/keycloak-spinner/KeycloakSpinner\";\nimport { PermissionsTab } from \"../components/permission-tab/PermissionTab\";\nimport { RolesList } from \"../components/roles-list/RolesList\";\nimport {\n RoutableTabs,\n useRoutableTab,\n} from \"../components/routable-tabs/RoutableTabs\";\nimport {\n ViewHeader,\n ViewHeaderBadge,\n} from \"../components/view-header/ViewHeader\";\nimport { useAccess } from \"../context/access/Access\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport {\n convertAttributeNameToForm,\n convertFormValuesToObject,\n convertToFormValues,\n exportClient,\n} from \"../util\";\nimport { useFetch } from \"../utils/useFetch\";\nimport useIsFeatureEnabled, { Feature } from \"../utils/useIsFeatureEnabled\";\nimport { useParams } from \"../utils/useParams\";\nimport useToggle from \"../utils/useToggle\";\nimport { AdvancedTab } from \"./AdvancedTab\";\nimport { ClientSessions } from \"./ClientSessions\";\nimport { ClientSettings } from \"./ClientSettings\";\nimport { AuthorizationEvaluate } from \"./authorization/AuthorizationEvaluate\";\nimport { AuthorizationExport } from \"./authorization/AuthorizationExport\";\nimport { AuthorizationPermissions } from \"./authorization/Permissions\";\nimport { AuthorizationPolicies } from \"./authorization/Policies\";\nimport { AuthorizationResources } from \"./authorization/Resources\";\nimport { AuthorizationScopes } from \"./authorization/Scopes\";\nimport { AuthorizationSettings } from \"./authorization/Settings\";\nimport { Credentials } from \"./credentials/Credentials\";\nimport { Keys } from \"./keys/Keys\";\nimport { SamlKeys } from \"./keys/SamlKeys\";\nimport {\n AuthorizationTab,\n toAuthorizationTab,\n} from \"./routes/AuthenticationTab\";\nimport { ClientParams, ClientTab, toClient } from \"./routes/Client\";\nimport { toClientRole } from \"./routes/ClientRole\";\nimport { ClientScopesTab, toClientScopesTab } from \"./routes/ClientScopeTab\";\nimport { toClients } from \"./routes/Clients\";\nimport { toCreateRole } from \"./routes/NewRole\";\nimport { ClientScopes } from \"./scopes/ClientScopes\";\nimport { EvaluateScopes } from \"./scopes/EvaluateScopes\";\nimport { ServiceAccount } from \"./service-account/ServiceAccount\";\nimport { getProtocolName, isRealmClient } from \"./utils\";\n\ntype ClientDetailHeaderProps = {\n onChange: (value: boolean) => void;\n value: boolean | undefined;\n save: () => void;\n client: ClientRepresentation;\n toggleDownloadDialog: () => void;\n toggleDeleteDialog: () => void;\n};\n\nconst ClientDetailHeader = ({\n onChange,\n value,\n save,\n client,\n toggleDownloadDialog,\n toggleDeleteDialog,\n}: ClientDetailHeaderProps) => {\n const { t } = useTranslation(\"clients\");\n const [toggleDisableDialog, DisableConfirm] = useConfirmDialog({\n titleKey: \"clients:disableConfirmTitle\",\n messageKey: \"clients:disableConfirm\",\n continueButtonLabel: \"common:disable\",\n onConfirm: () => {\n onChange(!value);\n save();\n },\n });\n\n const badges = useMemo(() => {\n const protocolName = getProtocolName(\n t,\n client.protocol ?? \"openid-connect\",\n );\n\n const text = client.bearerOnly ? (\n \n }\n >\n {protocolName}\n \n \n ) : (\n \n );\n\n return [{ text }];\n }, [client, t]);\n\n const { hasAccess } = useAccess();\n const isManager = hasAccess(\"manage-clients\") || client.access?.configure;\n\n const dropdownItems = [\n \n {t(\"downloadAdapterConfig\")}\n ,\n exportClient(client)}>\n {t(\"common:export\")}\n ,\n ...(!isRealmClient(client) && isManager\n ? [\n ,\n \n {t(\"common:delete\")}\n ,\n ]\n : []),\n ];\n\n return (\n <>\n \n {\n if (!value) {\n toggleDisableDialog();\n } else {\n onChange(value);\n save();\n }\n }}\n />\n \n );\n};\n\nexport type SaveOptions = {\n confirmed?: boolean;\n messageKey?: string;\n};\n\nexport type FormFields = Omit<\n ClientRepresentation,\n \"authorizationSettings\" | \"resources\"\n>;\n\nexport default function ClientDetails() {\n const { t } = useTranslation(\"clients\");\n const { addAlert, addError } = useAlerts();\n const { realm } = useRealm();\n const { hasAccess } = useAccess();\n const isFeatureEnabled = useIsFeatureEnabled();\n\n const hasManageAuthorization = hasAccess(\"manage-authorization\");\n const hasManageClients = hasAccess(\"manage-clients\");\n const hasViewClients = hasAccess(\"view-clients\");\n const hasViewUsers = hasAccess(\"view-users\");\n const permissionsEnabled =\n isFeatureEnabled(Feature.AdminFineGrainedAuthz) && hasManageAuthorization;\n\n const navigate = useNavigate();\n\n const [downloadDialogOpen, toggleDownloadDialogOpen] = useToggle();\n const [changeAuthenticatorOpen, toggleChangeAuthenticatorOpen] = useToggle();\n\n const form = useForm();\n const { clientId } = useParams();\n const [key, setKey] = useState(0);\n\n const clientAuthenticatorType = useWatch({\n control: form.control,\n name: \"clientAuthenticatorType\",\n defaultValue: \"client-secret\",\n });\n\n const [client, setClient] = useState();\n\n const loader = async () => {\n const roles = await adminClient.clients.listRoles({ id: clientId });\n return sortBy(roles, (role) => role.name?.toUpperCase());\n };\n\n const useTab = (tab: ClientTab) =>\n useRoutableTab(\n toClient({\n realm,\n clientId,\n tab,\n }),\n );\n\n const settingsTab = useTab(\"settings\");\n const keysTab = useTab(\"keys\");\n const credentialsTab = useTab(\"credentials\");\n const rolesTab = useTab(\"roles\");\n const clientScopesTab = useTab(\"clientScopes\");\n const authorizationTab = useTab(\"authorization\");\n const serviceAccountTab = useTab(\"serviceAccount\");\n const sessionsTab = useTab(\"sessions\");\n const permissionsTab = useTab(\"permissions\");\n const advancedTab = useTab(\"advanced\");\n\n const useClientScopesTab = (tab: ClientScopesTab) =>\n useRoutableTab(\n toClientScopesTab({\n realm,\n clientId,\n tab,\n }),\n );\n\n const clientScopesSetupTab = useClientScopesTab(\"setup\");\n const clientScopesEvaluateTab = useClientScopesTab(\"evaluate\");\n\n const useAuthorizationTab = (tab: AuthorizationTab) =>\n useRoutableTab(\n toAuthorizationTab({\n realm,\n clientId,\n tab,\n }),\n );\n\n const authorizationSettingsTab = useAuthorizationTab(\"settings\");\n const authorizationResourcesTab = useAuthorizationTab(\"resources\");\n const authorizationScopesTab = useAuthorizationTab(\"scopes\");\n const authorizationPoliciesTab = useAuthorizationTab(\"policies\");\n const authorizationPermissionsTab = useAuthorizationTab(\"permissions\");\n const authorizationEvaluateTab = useAuthorizationTab(\"evaluate\");\n const authorizationExportTab = useAuthorizationTab(\"export\");\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"clients:clientDeleteConfirmTitle\",\n messageKey: \"clients:clientDeleteConfirm\",\n continueButtonLabel: \"common:delete\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n await adminClient.clients.del({ id: clientId });\n addAlert(t(\"clientDeletedSuccess\"), AlertVariant.success);\n navigate(toClients({ realm }));\n } catch (error) {\n addError(\"clients:clientDeleteError\", error);\n }\n },\n });\n\n const setupForm = (client: ClientRepresentation) => {\n form.reset({ ...client });\n convertToFormValues(client, form.setValue);\n if (client.attributes?.[\"acr.loa.map\"]) {\n form.setValue(\n convertAttributeNameToForm(\"attributes.acr.loa.map\"),\n // @ts-ignore\n Object.entries(JSON.parse(client.attributes[\"acr.loa.map\"])).flatMap(\n ([key, value]) => ({ key, value }),\n ),\n );\n }\n };\n\n useFetch(\n () => adminClient.clients.findOne({ id: clientId }),\n (fetchedClient) => {\n if (!fetchedClient) {\n throw new Error(t(\"common:notFound\"));\n }\n setClient(cloneDeep(fetchedClient));\n setupForm(fetchedClient);\n },\n [clientId, key],\n );\n\n const save = async (\n { confirmed = false, messageKey = \"clientSaveSuccess\" }: SaveOptions = {\n confirmed: false,\n messageKey: \"clientSaveSuccess\",\n },\n ) => {\n if (!(await form.trigger())) {\n return;\n }\n\n if (\n !client?.publicClient &&\n client?.clientAuthenticatorType !== clientAuthenticatorType &&\n !confirmed\n ) {\n toggleChangeAuthenticatorOpen();\n return;\n }\n\n const values = convertFormValuesToObject(form.getValues());\n\n const submittedClient =\n convertFormValuesToObject(values);\n\n if (submittedClient.attributes?.[\"acr.loa.map\"]) {\n submittedClient.attributes[\"acr.loa.map\"] = JSON.stringify(\n Object.fromEntries(\n (submittedClient.attributes[\"acr.loa.map\"] as KeyValueType[])\n .filter(({ key }) => key !== \"\")\n .map(({ key, value }) => [key, value]),\n ),\n );\n }\n\n try {\n const newClient: ClientRepresentation = {\n ...client,\n ...submittedClient,\n };\n\n newClient.clientId = newClient.clientId?.trim();\n\n await adminClient.clients.update({ id: clientId }, newClient);\n setupForm(newClient);\n setClient(newClient);\n addAlert(t(messageKey), AlertVariant.success);\n } catch (error) {\n addError(\"clients:clientSaveError\", error);\n }\n };\n\n if (!client) {\n return ;\n }\n\n return (\n <>\n save({ confirmed: true })}\n >\n <>\n {t(\"changeAuthenticatorConfirm\", {\n clientAuthenticatorType: clientAuthenticatorType,\n })}\n \n \n \n {downloadDialogOpen && (\n \n )}\n (\n \n )}\n />\n \n \n \n {t(\"common:settings\")}}\n {...settingsTab}\n >\n save()}\n reset={() => setupForm(client)}\n />\n \n {((!client.publicClient && !isRealmClient(client)) ||\n client.protocol === \"saml\") && (\n {t(\"keys\")}}\n {...keysTab}\n >\n {client.protocol === \"openid-connect\" && (\n \n )}\n {client.protocol === \"saml\" && (\n \n )}\n \n )}\n {!client.publicClient &&\n !isRealmClient(client) &&\n (hasViewClients ||\n client.access?.configure ||\n client.access?.view) && (\n {t(\"credentials\")}}\n {...credentialsTab}\n >\n setKey(key + 1)}\n />\n \n )}\n {t(\"roles\")}}\n {...rolesTab}\n >\n \n toClientRole({\n realm,\n clientId: client.id!,\n id: roleId,\n tab: \"details\",\n })\n }\n isReadOnly={!(hasManageClients || client.access?.configure)}\n />\n \n {!isRealmClient(client) && !client.bearerOnly && (\n {t(\"clientScopes\")}}\n {...clientScopesTab}\n >\n \n {t(\"setup\")}}\n {...clientScopesSetupTab}\n >\n \n \n {t(\"evaluate\")}}\n {...clientScopesEvaluateTab}\n >\n \n \n \n \n )}\n {client!.authorizationServicesEnabled && hasManageAuthorization && (\n {t(\"authorization\")}}\n {...authorizationTab}\n >\n \n {t(\"settings\")}}\n {...authorizationSettingsTab}\n >\n \n \n {t(\"resources\")}}\n {...authorizationResourcesTab}\n >\n \n \n {t(\"scopes\")}}\n {...authorizationScopesTab}\n >\n \n \n {t(\"policies\")}}\n {...authorizationPoliciesTab}\n >\n \n \n {t(\"common:permissions\")}\n }\n {...authorizationPermissionsTab}\n >\n \n \n {t(\"evaluate\")}}\n {...authorizationEvaluateTab}\n >\n \n \n {t(\"common:export\")}}\n {...authorizationExportTab}\n >\n \n \n \n \n )}\n {client!.serviceAccountsEnabled && hasViewUsers && (\n {t(\"serviceAccount\")}}\n {...serviceAccountTab}\n >\n \n \n )}\n {t(\"sessions\")}}\n {...sessionsTab}\n >\n \n \n {permissionsEnabled &&\n (hasManageClients || client.access?.manage) && (\n {t(\"common:permissions\")}}\n {...permissionsTab}\n >\n \n \n )}\n {t(\"advanced\")}}\n {...advancedTab}\n >\n \n \n \n \n \n \n );\n}\n"],"names":["styles","CodeBlock","_a","children","className","actions","props","__rest","React.createElement","css","CodeBlockAction","PanelHeader","TextListVariants","TextList","component","isPlain","Component","TextListItemVariants","TextListItem","DownloadDialog","id","open","toggleDialog","protocol","realm","useRealm","t","useTranslation","enabled","useHelp","configFormats","useServerInfo","selected","setSelected","useState","snippet","setSnippet","openType","setOpenType","selectedConfig","useMemo","config","sanitizeSnippet","useFetch","addTrailingSlash","adminClient","getAuthorizationHeaders","prettyPrintJSON","useEffect","jsx","ConfirmDialogModal","saveAs","ModalVariant","Form","jsxs","Stack","StackItem","FormGroup","HelpItem","Select","isExpanded","SelectVariant","_","value","configFormat","SelectOption","KeycloakTextArea","inherited","expires","TokenLifespan","name","defaultValue","units","setOpen","focused","setFocused","onFocus","onBlur","control","useFormContext","isExpireSet","Controller","field","Split","SplitItem","TimeSelector","AdvancedSettings","save","reset","hasConfigureAccess","setRealm","realmName","FormAccess","convertAttributeNameToForm","Fragment","Switch","v","KeyValueInput","MultiLineInput","ActionGroup","Button","AuthenticationOverrides","flows","setFlows","browserFlowOpen","setBrowserFlowOpen","directGrantOpen","setDirectGrantOpen","filteredFlows","flow","sortBy","f","TimeSelectorForm","useController","AddHostDialog","isOpen","onAdded","onClose","register","handleSubmit","isDirty","isValid","useForm","addAlert","addError","useAlerts","onSubmit","node","AlertVariant","error","Modal","ButtonVariant","KeycloakTextInput","ClusteringPanel","registeredNodes","access","formatDate","useFormatDate","nodes","setNodes","expanded","setExpanded","selectedNode","setSelectedNode","addNodeOpen","setAddNodeOpen","key","setKey","refresh","testCluster","result","parseResult","toggleDeleteNodeConfirm","DeleteNodeConfirm","useConfirmDialog","object","ExpandableSection","KeycloakDataTable","entry","ToolbarItem","FORMAT_DATE_AND_TIME","ListEmptyState","ApplicationUrls","TextControl","FineGrainOpenIdConnect","providers","clientSignatureProviders","contentEncryptionProviders","cekManagementProviders","signatureProviders","accessTokenOpen","setAccessTokenOpen","idTokenOpen","setIdTokenOpen","idTokenKeyManagementOpen","setIdTokenKeyManagementOpen","idTokenContentOpen","setIdTokenContentOpen","userInfoSignedResponseOpen","setUserInfoSignedResponseOpen","requestObjectSignatureOpen","setRequestObjectSignatureOpen","requestObjectRequiredOpen","setRequestObjectRequiredOpen","requestObjectEncryptionOpen","setRequestObjectEncryptionOpen","requestObjectEncodingOpen","setRequestObjectEncodingOpen","authorizationSignedOpen","setAuthorizationSignedOpen","authorizationEncryptedOpen","setAuthorizationEncryptedOpen","authorizationEncryptedResponseOpen","setAuthorizationEncryptedResponseOpen","userInfoResponseEncryptionKeyManagementOpen","setUserInfoResponseEncryptionKeyManagementOpen","userInfoResponseEncryptionContentEncryptionOpen","setUserInfoResponseEncryptionContentEncryptionOpen","keyOptions","sortProviders","p","cekManagementOptions","signatureOptions","contentOptions","requestObjectOptions","requestObjectEncryptionOptions","requestObjectEncodingOptions","authorizationSignedResponseOptions","requestObjectRequiredOptions","FineGrainSamlEndpointConfig","OpenIdConnectCompatibilityModes","RevocationPanel","adminUrl","revocationFieldName","pushRevocationButtonRef","useRef","getValues","setValue","setNotBefore","time","messageKey","getNotBeforeValue","date","push","Text","Trans","Link","toClient","InputGroup","Tooltip","prefixKey","successCount","failedCount","AdvancedTab","client","openIdConnect","publicClient","attributes","authenticationFlowBindingOverrides","resetFields","names","PageSection","ScrollForm","toUpperCase","ClientSessions","loader","first","max","mapSessionsToType","type","sessions","session","SessionsTable","Toggle","label","SamlConfig","nameFormatOpen","setNameFormatOpen","SIGNATURE_ALGORITHMS","KEYNAME_TRANSFORMER","CANONICALIZATION","SamlSignature","algOpen","setAlgOpen","keyOpen","setKeyOpen","canOpen","setCanOpen","watch","signDocs","signAssertion","algorithm","can","AccessSettings","hasAccess","useAccess","isManager","LoginSettings","FixedButtonsGroup","LoginSettingsPanel","loginThemeOpen","setLoginThemeOpen","loginThemes","consentRequired","displayOnConsentScreen","theme","validateUrl","uri","LogoutPanel","errors","frontchannelLogout","beerify","ValidatedOptions","ClientSettings","ClientDescription","CapabilityConfig","ValueInput","rowIndex","attribute","selectableValues","resources","isValueOpenArray","setIsValueOpenArray","toggleValueSelect","arr","attributeValues","values","defaultContextAttributes","attr","renderSelectOptionType","scopeValues","resource","scope","getMessageBundleKey","attributeName","camelCase","Td","KeyBasedAttributeInput","fields","append","remove","useFieldArray","isKeyOpenArray","setIsKeyOpenArray","toggleKeySelect","watchLastValue","TableComposable","Thead","Tr","Th","Tbody","MinusCircleIcon","PlusCircleIcon","AuthorizationDataModal","data","show","toggle","useToggle","TextContent","TextVariants","AuthorizationEvaluateResourcePolicies","idx","outerPolicy","clientId","useParams","prev","toPermissionDetails","DecisionEffect","ExpandableRowContent","DescriptionList","item","toPolicyDetails","capitalize","AuthorizationEvaluateResource","evaluateResults","filterResults","results","filter","status","Results","evaluateResult","back","filterDropdownOpen","toggleFilterDropdown","setFilter","searchQuery","setSearchQuery","searchInput","setSearchInput","confirmSearchQuery","handleKeyDown","e","filteredResources","noEvaluatedData","noFilteredData","Toolbar","ToolbarGroup","TextInput","SearchIcon","Divider","AuthorizationEvaluate","AuthorizationEvaluateContent","ForbiddenSection","form","trigger","scopesDropdownOpen","setScopesDropdownOpen","roleDropdownOpen","setRoleDropdownOpen","setIsExpanded","applyToResourceType","setApplyToResourceType","setResources","scopes","setScopes","setEvaluateResult","clientRoles","setClientRoles","roles","evaluate","formValues","keys","keyValueToArray","resEval","r","s","evaluation","user","useWatch","FormProvider","Panel","Title","PanelMainBody","ClientSelect","UserSelect","option","event","role","AuthorizationExport","code","setCode","authorizationDetails","setAuthorizationDetails","authDetails","exportAuthDetails","KeycloakSpinner","DetailDescription","DetailDescriptionLink","array","convert","link","DescriptionListGroup","DescriptionListTerm","DescriptionListDescription","element","EmptyButton","permissionType","disabled","navigate","useNavigate","toNewPermission","TooltipEmptyButton","EmptyPermissionsState","isResourceEnabled","isScopeEnabled","EmptyState","EmptyStateIcon","EmptyStateBody","MoreLabel","Label","SearchDropdown","types","search","onSearch","isResource","typeOpen","toggleType","submit","typeOptions","Dropdown","DropdownToggle","AssociatedPoliciesRenderer","row","AuthorizationPermissions","permissions","setPermissions","selectedPermission","setSelectedPermission","policyProviders","setPolicyProviders","disabledCreate","setDisabledCreate","createOpen","toggleCreate","setSearch","setMax","setFirst","permission","associatedPolicies","params","policies","toggleDeleteDialog","DeleteConfirm","noData","searching","PaginatingTableToolbar","DropdownItem","DropdownSeparator","Alert","rows","index","NewPolicyDialog","onSelect","localeSort","useLocaleSort","sortedPolicies","mapByKey","provider","isValidComponentType","DependentPoliciesRenderer","AuthorizationPolicies","setPolicies","selectedPolicy","setSelectedPolicy","newDialog","policy","dependentPolicies","toCreatePolicy","DetailCell","uris","setScope","toScopeDetails","UriRenderer","AuthorizationResources","selectedResource","setSelectedResource","setPermission","fetchPermissions","toCreateResource","toResourceDetails","AuthorizationScopes","deleteDialog","selectedScope","setSelectedScope","collapsed","setCollapsed","getScope","c","newlyOpened","resourcesScopes","resourceScope","DeleteScopeDialog","toNewScope","_event","ImportDialog","onConfirm","closeDialog","imported","setImported","JsonFileUpload","Radio","POLICY_ENFORCEMENT_MODES","AuthorizationSettings","setResource","importDialog","toggleImportDialog","importResource","mode","DecisionStrategySelect","CopyToClipboardButton","text","variant","setTimeout","useSetTimeout","copy","setCopy","copyMessage","copyToClipboard","ClipboardCopyButton","SecretInput","buttonLabel","secret","PasswordInput","ExpireDateFormatter","unixTimeToString","ClientSecret","secretRotated","setSecretRotated","secretExpirationTime","secretRotatedExpirationTime","expired","toggleInvalidateConfirm","InvalidateConfirm","SignedJWT","clientAuthenticatorType","cryptoInfo","X509","Credentials","setProviders","setSecret","accessToken","setAccessToken","regenerate","call","message","regenerateClientSecret","toggleClientSecretConfirm","ClientSecretConfirm","regenerateAccessToken","toggleAccessTokenConfirm","AccessTokenConfirm","Card","CardBody","ClipboardCopy","CertificateDisplay","keyInfo","Certificate","plain","useId","StoreSettings","hidePassword","isSaml","CERT_PEM","extensions","getFileExtension","format","KeyForm","hasPem","useFile","filename","setFilename","openArchiveFormat","setOpenArchiveFormat","supportedKeystoreTypes","FileUpload","GenerateKeyDialog","ImportKeyDialog","baseFormats","formats","importFile","Keys","setKeyInfo","openGenerateKeys","toggleOpenGenerateKeys","setOpenGenerateKeys","openImportKeys","toggleOpenImportKeys","setOpenImportKeys","useJwksUrl","info","generate","keyStore","importKey","formData","file","rest","CardHeader","CardTitle","ExportSamlKeyDialog","close","download","submitForm","callback","SamlKeysDialog","onCancel","setType","setKeys","Flex","FlexItem","SamlImportKeyDialog","KEYS","KEYS_MAPPING","KeySection","onChanged","onGenerate","onImport","title","showImportDialog","section","FormPanel","SamlKeys","isChanged","setIsChanged","selectedType","setSelectedType","openImport","setImportOpen","setRefresh","toggleDisableDialog","DisableConfirm","toggleReGenerateDialog","ReGenerateConfirm","isNew","DEDICATED_ROW","TypeSelector","fineGrainedAccess","isDedicatedRow","CellDropdown","changeClientScope","ClientScopes","clientName","searchType","setSearchType","searchTypeType","setSearchTypeType","AllClientScopes","addDialogOpen","setAddDialogOpen","setRest","selectedRows","setSelectedRowState","setSelectedRows","kebabOpen","setKebabOpen","isViewer","defaultClientScopes","optionalClientScopes","clientScopes","find","clientScope","optional","ClientScope","defaultScopes","nameFilter","typeFilter","firstNum","page","removeClientScope","AddScopeDialog","addClientScope","SearchToolbar","ChangeTypeDropdown","KebabToggle","toDedicatedScope","GeneratedCodeTab","ProtocolMappers","protocolMappers","EffectiveRoles","effectiveRoles","EvaluateScopes","prefix","mapperTypes","selectableScopes","setSelectableScopes","isScopeOpen","setIsScopeOpen","activeTab","setActiveTab","setEffectiveRoles","setProtocolMappers","userInfo","setUserInfo","idToken","setIdToken","tabContent1","tabContent2","tabContent3","tabContent4","tabContent5","hasViewUsers","mapperList","mapper","QuestionCircleIcon","Grid","GridItem","TabContent","Tabs","Tab","TabTitleText","ServiceAccount","serviceAccount","setServiceAccount","hasManageClients","assignRoles","realmRoles","InfoCircleIcon","toUser","RoleMapping","ClientDetailHeader","onChange","toggleDownloadDialog","badges","protocolName","getProtocolName","dropdownItems","exportClient","isRealmClient","ViewHeader","ClientDetails","isFeatureEnabled","useIsFeatureEnabled","hasManageAuthorization","hasViewClients","permissionsEnabled","Feature","downloadDialogOpen","toggleDownloadDialogOpen","changeAuthenticatorOpen","toggleChangeAuthenticatorOpen","setClient","useTab","tab","useRoutableTab","settingsTab","keysTab","credentialsTab","rolesTab","clientScopesTab","authorizationTab","serviceAccountTab","sessionsTab","permissionsTab","advancedTab","useClientScopesTab","toClientScopesTab","clientScopesSetupTab","clientScopesEvaluateTab","useAuthorizationTab","toAuthorizationTab","authorizationSettingsTab","authorizationResourcesTab","authorizationScopesTab","authorizationPoliciesTab","authorizationPermissionsTab","authorizationEvaluateTab","authorizationExportTab","toClients","setupForm","fetchedClient","cloneDeep","confirmed","convertFormValuesToObject","submittedClient","newClient","RoutableTabs","RolesList","toCreateRole","roleId","toClientRole","PermissionsTab"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy