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

theme.keycloak.v2.admin.resources.assets.ClientDetails-048733ef.js.map Maven / Gradle / Ivy

There is a newer version: 25.0.1
Show newest version
{"version":3,"file":"ClientDetails-048733ef.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 never = \"tokenLifespan.never\";\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\" && value !== -1) ||\n (typeof value === \"string\" && value !== \"\" && value !== \"-1\") ||\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)\n ? t(expires)\n : field.value === \"\"\n ? t(inherited)\n : t(never),\n ]}\n >\n {t(inherited)}\n {t(never)}\n {t(expires)}\n \n \n \n {field.value !== \"-1\" && field.value !== -1 && (\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 || client.access?.configure) && (\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","never","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