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

theme.keycloak.v2.admin.resources.assets.RealmSettingsSection-2oj_-SB8.js.map Maven / Gradle / Ivy

{"version":3,"file":"RealmSettingsSection-2oj_-SB8.js","sources":["../../../../../node_modules/.pnpm/@[email protected][email protected][email protected][email protected]/node_modules/@patternfly/react-core/dist/esm/components/Select/SelectGroup.js","../../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/flatten.js","../../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/_flatRest.js","../../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/isPlainObject.js","../../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/_parent.js","../../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/_baseUnset.js","../../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/_customOmitClone.js","../../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/omit.js","../../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/uniqWith.js","../../src/utils/useCurrentUser.ts","../../src/realm-settings/EmailTab.tsx","../../src/realm-settings/GeneralTab.tsx","../../src/realm-settings/LoginTab.tsx","../../src/realm-settings/PartialExport.tsx","../../src/realm-settings/PartialImport.tsx","../../src/realm-settings/PoliciesTab.tsx","../../src/realm-settings/ProfilesTab.tsx","../../src/realm-settings/SessionsTab.tsx","../../src/realm-settings/ThemesTab.tsx","../../src/realm-settings/TokensTab.tsx","../../src/realm-settings/DefaultGroupsTab.tsx","../../src/realm-settings/UserRegistration.tsx","../../src/realm-settings/event-config/EventsTypeTable.tsx","../../src/realm-settings/event-config/AddEventTypesDialog.tsx","../../src/realm-settings/event-config/EventConfigForm.tsx","../../src/realm-settings/event-config/EventListenersForm.tsx","../../src/realm-settings/event-config/EventsTab.tsx","../../src/realm-settings/keys/KeysListTab.tsx","../../src/realm-settings/keys/key-providers/KeyProviderModal.tsx","../../src/realm-settings/keys/key-providers/KeyProvidersPicker.tsx","../../src/realm-settings/keys/KeysProvidersTab.tsx","../../src/realm-settings/keys/KeysTab.tsx","../../src/realm-settings/localization/EffectiveMessageBundles.tsx","../../src/realm-settings/AddTranslationModal.tsx","../../src/realm-settings/localization/RealmOverrides.tsx","../../src/realm-settings/localization/LocalizationTab.tsx","../../src/realm-settings/security-defences/HelpLinkTextInput.tsx","../../src/realm-settings/security-defences/HeadersForm.tsx","../../src/realm-settings/security-defences/Time.tsx","../../src/realm-settings/security-defences/BruteForceDetection.tsx","../../src/realm-settings/security-defences/SecurityDefenses.tsx","../../src/realm-settings/user-profile/AttributesGroupTab.tsx","../../src/realm-settings/user-profile/AttributesTab.tsx","../../src/realm-settings/user-profile/JsonEditorTab.tsx","../../src/realm-settings/user-profile/UserProfileTab.tsx","../../src/realm-settings/RealmSettingsTabs.tsx","../../src/realm-settings/RealmSettingsSection.tsx"],"sourcesContent":["import { __rest } from \"tslib\";\nimport React from 'react';\nimport { css } from '@patternfly/react-styles';\nimport { MenuGroup } from '../Menu';\nexport const SelectGroup = (_a) => {\n    var { children, className, label } = _a, props = __rest(_a, [\"children\", \"className\", \"label\"]);\n    return (React.createElement(MenuGroup, Object.assign({ className: css(className), label: label }, props), children));\n};\nSelectGroup.displayName = 'SelectGroup';\n//# sourceMappingURL=SelectGroup.js.map","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","import flatten from './flatten.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n  return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nexport default flatRest;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n    funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import baseGet from './_baseGet.js';\nimport baseSlice from './_baseSlice.js';\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n  return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nexport default parent;\n","import castPath from './_castPath.js';\nimport last from './last.js';\nimport parent from './_parent.js';\nimport toKey from './_toKey.js';\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n  path = castPath(path, object);\n  object = parent(object, path);\n  return object == null || delete object[toKey(last(path))];\n}\n\nexport default baseUnset;\n","import isPlainObject from './isPlainObject.js';\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n  return isPlainObject(value) ? undefined : value;\n}\n\nexport default customOmitClone;\n","import arrayMap from './_arrayMap.js';\nimport baseClone from './_baseClone.js';\nimport baseUnset from './_baseUnset.js';\nimport castPath from './_castPath.js';\nimport copyObject from './_copyObject.js';\nimport customOmitClone from './_customOmitClone.js';\nimport flatRest from './_flatRest.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n  var result = {};\n  if (object == null) {\n    return result;\n  }\n  var isDeep = false;\n  paths = arrayMap(paths, function(path) {\n    path = castPath(path, object);\n    isDeep || (isDeep = path.length > 1);\n    return path;\n  });\n  copyObject(object, getAllKeysIn(object), result);\n  if (isDeep) {\n    result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n  }\n  var length = paths.length;\n  while (length--) {\n    baseUnset(result, paths[length]);\n  }\n  return result;\n});\n\nexport default omit;\n","import baseUniq from './_baseUniq.js';\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nexport default uniqWith;\n","import UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport { useState } from \"react\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useWhoAmI } from \"../context/whoami/WhoAmI\";\nimport { useFetch } from \"./useFetch\";\n\nexport function useCurrentUser() {\n  const { adminClient } = useAdminClient();\n  const { whoAmI } = useWhoAmI();\n  const [currentUser, setCurrentUser] = useState();\n\n  const userId = whoAmI.getUserId();\n\n  useFetch(() => adminClient.users.findOne({ id: userId }), setCurrentUser, [\n    userId,\n  ]);\n\n  return currentUser;\n}\n","import type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport {\n  ActionGroup,\n  ActionListItem,\n  Alert,\n  AlertActionLink,\n  AlertVariant,\n  Button,\n  Checkbox,\n  FormGroup,\n  PageSection,\n} from \"@patternfly/react-core\";\nimport { Controller, FormProvider, useForm, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\nimport {\n  FormPanel,\n  PasswordControl,\n  SwitchControl,\n  TextControl,\n} from \"@keycloak/keycloak-ui-shared\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { FormAccess } from \"../components/form/FormAccess\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { toUser } from \"../user/routes/User\";\nimport { emailRegexPattern } from \"../util\";\nimport { useCurrentUser } from \"../utils/useCurrentUser\";\nimport useToggle from \"../utils/useToggle\";\n\nimport \"./realm-settings-section.css\";\n\ntype RealmSettingsEmailTabProps = {\n  realm: RealmRepresentation;\n  save: (realm: RealmRepresentation) => void;\n};\n\ntype FormFields = Omit;\n\nexport const RealmSettingsEmailTab = ({\n  realm,\n  save,\n}: RealmSettingsEmailTabProps) => {\n  const { adminClient } = useAdminClient();\n\n  const { t } = useTranslation();\n  const { realm: realmName } = useRealm();\n  const { addAlert, addError } = useAlerts();\n  const currentUser = useCurrentUser();\n\n  const form = useForm({ defaultValues: realm });\n  const { control, handleSubmit, watch, reset: resetForm, getValues } = form;\n\n  const reset = () => resetForm(realm);\n  const watchFromValue = watch(\"smtpServer.from\", \"\");\n  const watchHostValue = watch(\"smtpServer.host\", \"\");\n  const [isTesting, toggleTest] = useToggle();\n\n  const authenticationEnabled = useWatch({\n    control,\n    name: \"smtpServer.auth\",\n    defaultValue: \"\",\n  });\n\n  const testConnection = async () => {\n    const toNumber = (value: string) => Number(value);\n    const toBoolean = (value: string) => value === true.toString();\n    const valueMapper = new Map unknown>([\n      [\"port\", toNumber],\n      [\"ssl\", toBoolean],\n      [\"starttls\", toBoolean],\n      [\"auth\", toBoolean],\n    ]);\n\n    const serverSettings = { ...getValues()[\"smtpServer\"] };\n\n    for (const [key, mapperFn] of valueMapper.entries()) {\n      serverSettings[key] = mapperFn(serverSettings[key]);\n    }\n\n    // For default value, back end is expecting null instead of 0\n    if (serverSettings.port === 0) serverSettings.port = null;\n\n    try {\n      toggleTest();\n      await adminClient.realms.testSMTPConnection(\n        { realm: realm.realm! },\n        serverSettings,\n      );\n      addAlert(t(\"testConnectionSuccess\"), AlertVariant.success);\n    } catch (error) {\n      addError(\"testConnectionError\", error);\n    }\n    toggleTest();\n  };\n\n  return (\n    \n      \n        \n          \n            \n            \n            \n            \n            \n          \n        \n        \n          \n            \n            \n            \n               (\n                   field.onChange(\"\" + value)}\n                  />\n                )}\n              />\n               (\n                   field.onChange(\"\" + value)}\n                  />\n                )}\n              />\n            \n            \n            {authenticationEnabled === \"true\" && (\n              <>\n                \n                \n              \n            )}\n            {currentUser && (\n              \n                {currentUser.email ? (\n                  \n                ) : (\n                   (\n                          \n                        )}\n                      >\n                        {t(\"testConnectionHint.withoutEmailAction\")}\n                      \n                    }\n                  />\n                )}\n              \n            )}\n            \n              \n                \n                  {t(\"save\")}\n                \n              \n              \n                 testConnection()}\n                  data-testid=\"test-connection-button\"\n                  isDisabled={\n                    !(\n                      emailRegexPattern.test(watchFromValue) && watchHostValue\n                    ) || !currentUser?.email\n                  }\n                  aria-describedby=\"descriptionTestConnection\"\n                  isLoading={isTesting}\n                  spinnerAriaValueText={t(\"testingConnection\")}\n                >\n                  {t(\"testConnection\")}\n                \n              \n              \n                \n                  {t(\"revert\")}\n                \n              \n            \n          \n        \n      \n    \n  );\n};\n","import type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport {\n  UnmanagedAttributePolicy,\n  UserProfileConfig,\n} from \"@keycloak/keycloak-admin-client/lib/defs/userProfileMetadata\";\nimport {\n  ActionGroup,\n  Button,\n  ClipboardCopy,\n  FormGroup,\n  PageSection,\n  Stack,\n  StackItem,\n} from \"@patternfly/react-core\";\nimport { useEffect, useState } from \"react\";\nimport { Controller, FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport {\n  FormErrorText,\n  HelpItem,\n  SelectControl,\n  TextControl,\n} from \"@keycloak/keycloak-ui-shared\";\nimport { useAdminClient } from \"../admin-client\";\nimport { DefaultSwitchControl } from \"../components/SwitchControl\";\nimport { FormattedLink } from \"../components/external-link/FormattedLink\";\nimport { FormAccess } from \"../components/form/FormAccess\";\nimport { KeyValueInput } from \"../components/key-value-form/KeyValueInput\";\nimport { KeycloakSpinner } from \"../components/keycloak-spinner/KeycloakSpinner\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport {\n  addTrailingSlash,\n  convertAttributeNameToForm,\n  convertToFormValues,\n} from \"../util\";\nimport { useFetch } from \"../utils/useFetch\";\nimport { UIRealmRepresentation } from \"./RealmSettingsTabs\";\n\nimport useIsFeatureEnabled, { Feature } from \"../utils/useIsFeatureEnabled\";\n\ntype RealmSettingsGeneralTabProps = {\n  realm: UIRealmRepresentation;\n  save: (realm: UIRealmRepresentation) => Promise;\n};\n\nexport const RealmSettingsGeneralTab = ({\n  realm,\n  save,\n}: RealmSettingsGeneralTabProps) => {\n  const { adminClient } = useAdminClient();\n\n  const { realm: realmName } = useRealm();\n  const [userProfileConfig, setUserProfileConfig] =\n    useState();\n\n  useFetch(\n    () => adminClient.users.getProfile({ realm: realmName }),\n    (config) => setUserProfileConfig(config),\n    [],\n  );\n\n  if (!userProfileConfig) {\n    return ;\n  }\n\n  return (\n    \n  );\n};\n\ntype RealmSettingsGeneralTabFormProps = {\n  realm: UIRealmRepresentation;\n  save: (realm: UIRealmRepresentation) => Promise;\n  userProfileConfig: UserProfileConfig;\n};\n\ntype FormFields = Omit & {\n  unmanagedAttributePolicy: UnmanagedAttributePolicy;\n};\n\nconst REQUIRE_SSL_TYPES = [\"all\", \"external\", \"none\"];\n\nconst UNMANAGED_ATTRIBUTE_POLICIES = [\n  UnmanagedAttributePolicy.Disabled,\n  UnmanagedAttributePolicy.Enabled,\n  UnmanagedAttributePolicy.AdminView,\n  UnmanagedAttributePolicy.AdminEdit,\n];\n\nfunction RealmSettingsGeneralTabForm({\n  realm,\n  save,\n  userProfileConfig,\n}: RealmSettingsGeneralTabFormProps) {\n  const { adminClient } = useAdminClient();\n\n  const { t } = useTranslation();\n  const { realm: realmName } = useRealm();\n  const form = useForm();\n  const {\n    control,\n    handleSubmit,\n    setValue,\n    formState: { isDirty, errors },\n  } = form;\n  const isFeatureEnabled = useIsFeatureEnabled();\n  const isOrganizationsEnabled = isFeatureEnabled(Feature.Organizations);\n\n  const setupForm = () => {\n    convertToFormValues(realm, setValue);\n    setValue(\n      \"unmanagedAttributePolicy\",\n      userProfileConfig.unmanagedAttributePolicy ||\n        UNMANAGED_ATTRIBUTE_POLICIES[0],\n    );\n    if (realm.attributes?.[\"acr.loa.map\"]) {\n      const result = Object.entries(\n        JSON.parse(realm.attributes[\"acr.loa.map\"]),\n      ).flatMap(([key, value]) => ({ key, value }));\n      result.concat({ key: \"\", value: \"\" });\n      setValue(\n        convertAttributeNameToForm(\"attributes.acr.loa.map\") as any,\n        result,\n      );\n    }\n  };\n\n  useEffect(setupForm, []);\n\n  const onSubmit = handleSubmit(\n    async ({ unmanagedAttributePolicy, ...data }) => {\n      const upConfig = { ...userProfileConfig };\n\n      if (unmanagedAttributePolicy === UnmanagedAttributePolicy.Disabled) {\n        delete upConfig.unmanagedAttributePolicy;\n      } else {\n        upConfig.unmanagedAttributePolicy = unmanagedAttributePolicy;\n      }\n\n      await save({ ...data, upConfig });\n    },\n  );\n\n  return (\n    \n      \n        \n          \n             (\n                \n                  {field.value}\n                \n              )}\n            />\n            {errors.realm && (\n              \n            )}\n          \n          \n          \n          \n           ({\n              key: sslType,\n              value: t(`sslType.${sslType}`),\n            }))}\n          />\n          \n            }\n          >\n            \n          \n          \n          {isOrganizationsEnabled && (\n            \n          )}\n           ({\n              key: policy,\n              value: t(`unmanagedAttributePolicy.${policy}`),\n            }))}\n          />\n          \n            }\n            fieldId=\"kc-endpoints\"\n          >\n            \n              \n                \n              \n              \n                \n              \n            \n          \n          \n            \n              {t(\"save\")}\n            \n            \n              {t(\"revert\")}\n            \n          \n        \n      \n    \n  );\n}\n","import type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport { FormGroup, PageSection, Switch } from \"@patternfly/react-core\";\nimport { useTranslation } from \"react-i18next\";\nimport { FormPanel, HelpItem } from \"@keycloak/keycloak-ui-shared\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { FormAccess } from \"../components/form/FormAccess\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\n\ntype RealmSettingsLoginTabProps = {\n  realm: RealmRepresentation;\n  refresh: () => void;\n};\n\ntype SwitchType = { [K in keyof RealmRepresentation]: boolean };\n\nexport const RealmSettingsLoginTab = ({\n  realm,\n  refresh,\n}: RealmSettingsLoginTabProps) => {\n  const { adminClient } = useAdminClient();\n\n  const { t } = useTranslation();\n\n  const { addAlert, addError } = useAlerts();\n  const { realm: realmName } = useRealm();\n\n  const updateSwitchValue = async (switches: SwitchType | SwitchType[]) => {\n    const name = Array.isArray(switches)\n      ? Object.keys(switches[0])[0]\n      : Object.keys(switches)[0];\n\n    try {\n      await adminClient.realms.update(\n        {\n          realm: realmName,\n        },\n        Array.isArray(switches)\n          ? switches.reduce((realm, s) => Object.assign(realm, s), realm)\n          : Object.assign(realm, switches),\n      );\n      addAlert(t(\"enableSwitchSuccess\", { switch: t(name) }));\n      refresh();\n    } catch (error) {\n      addError(t(\"enableSwitchError\"), error);\n    }\n  };\n\n  return (\n    \n      \n        \n          \n            }\n            hasNoPaddingTop\n          >\n             {\n                updateSwitchValue({ registrationAllowed: value });\n              }}\n              aria-label={t(\"registrationAllowed\")}\n            />\n          \n          \n            }\n            hasNoPaddingTop\n          >\n             {\n                updateSwitchValue({ resetPasswordAllowed: value });\n              }}\n              aria-label={t(\"resetPasswordAllowed\")}\n            />\n          \n          \n            }\n            hasNoPaddingTop\n          >\n             {\n                updateSwitchValue({ rememberMe: value });\n              }}\n              aria-label={t(\"rememberMe\")}\n            />\n          \n        \n      \n      \n        \n          \n            }\n            hasNoPaddingTop\n          >\n             {\n                updateSwitchValue([\n                  {\n                    registrationEmailAsUsername: value,\n                  },\n                  {\n                    duplicateEmailsAllowed: false,\n                  },\n                ]);\n              }}\n              aria-label={t(\"registrationEmailAsUsername\")}\n            />\n          \n          \n            }\n            hasNoPaddingTop\n          >\n             {\n                updateSwitchValue([\n                  {\n                    loginWithEmailAllowed: value,\n                  },\n                  { duplicateEmailsAllowed: false },\n                ]);\n              }}\n              aria-label={t(\"loginWithEmailAllowed\")}\n            />\n          \n          \n            }\n            hasNoPaddingTop\n          >\n             {\n                updateSwitchValue({\n                  duplicateEmailsAllowed: value,\n                });\n              }}\n              isDisabled={\n                realm.loginWithEmailAllowed || realm.registrationEmailAsUsername\n              }\n              aria-label={t(\"duplicateEmailsAllowed\")}\n            />\n          \n          \n            }\n            hasNoPaddingTop\n          >\n             {\n                updateSwitchValue({ verifyEmail: value });\n              }}\n              aria-label={t(\"verifyEmail\")}\n            />\n          \n        \n      \n      \n        \n          \n            }\n            hasNoPaddingTop\n          >\n             {\n                updateSwitchValue({ editUsernameAllowed: value });\n              }}\n              aria-label={t(\"editUsernameAllowed\")}\n            />\n          \n        \n      \n    \n  );\n};\n","import {\n  Alert,\n  AlertVariant,\n  Button,\n  ButtonVariant,\n  Form,\n  FormGroup,\n  Modal,\n  ModalVariant,\n  Switch,\n  Text,\n  TextContent,\n} from \"@patternfly/react-core\";\nimport { saveAs } from \"file-saver\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { prettyPrintJSON } from \"../util\";\n\nimport \"./partial-export.css\";\n\nexport type PartialExportDialogProps = {\n  isOpen: boolean;\n  onClose: () => void;\n};\n\nexport const PartialExportDialog = ({\n  isOpen,\n  onClose,\n}: PartialExportDialogProps) => {\n  const { adminClient } = useAdminClient();\n\n  const { t } = useTranslation();\n  const { realm } = useRealm();\n  const { addAlert, addError } = useAlerts();\n\n  const [exportGroupsAndRoles, setExportGroupsAndRoles] = useState(false);\n  const [exportClients, setExportClients] = useState(false);\n  const [isExporting, setIsExporting] = useState(false);\n\n  const showWarning = exportGroupsAndRoles || exportClients;\n\n  async function exportRealm() {\n    setIsExporting(true);\n\n    try {\n      const realmExport = await adminClient.realms.export({\n        realm,\n        exportClients,\n        exportGroupsAndRoles,\n      });\n\n      saveAs(\n        new Blob([prettyPrintJSON(realmExport)], {\n          type: \"application/json\",\n        }),\n        \"realm-export.json\",\n      );\n\n      addAlert(t(\"exportSuccess\"), AlertVariant.success);\n      onClose();\n    } catch (error) {\n      addError(\"exportFail\", error);\n    }\n\n    setIsExporting(false);\n  }\n\n  return (\n    \n          {t(\"export\")}\n        ,\n        \n          {t(\"cancel\")}\n        ,\n      ]}\n    >\n      \n        {t(\"partialExportHeaderText\")}\n      \n      \n        \n           setExportGroupsAndRoles(val)}\n            label={t(\"on\")}\n            labelOff={t(\"off\")}\n            aria-label={t(\"includeGroupsAndRoles\")}\n          />\n        \n        \n           setExportClients(val)}\n            isChecked={exportClients}\n            label={t(\"on\")}\n            labelOff={t(\"off\")}\n            aria-label={t(\"includeClients\")}\n          />\n        \n      \n\n      {showWarning && (\n        \n          {t(\"exportWarningDescription\")}\n        \n      )}\n    \n  );\n};\n","import type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport type {\n  PartialImportRealmRepresentation,\n  PartialImportResponse,\n  PartialImportResult,\n} from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport type RoleRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/roleRepresentation\";\nimport { KeycloakSelect } from \"@keycloak/keycloak-ui-shared\";\nimport {\n  Alert,\n  Button,\n  ButtonVariant,\n  Checkbox,\n  DataList,\n  DataListCell,\n  DataListItem,\n  DataListItemCells,\n  DataListItemRow,\n  Divider,\n  Label,\n  Modal,\n  ModalVariant,\n  SelectOption,\n  Stack,\n  StackItem,\n  Text,\n  TextContent,\n} from \"@patternfly/react-core\";\nimport { FormEvent, useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { JsonFileUpload } from \"../components/json-file-upload/JsonFileUpload\";\nimport { KeycloakDataTable } from \"../components/table-toolbar/KeycloakDataTable\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\n\nexport type PartialImportProps = {\n  open: boolean;\n  toggleDialog: () => void;\n};\n\n// An imported JSON file can either be an array of realm objects\n// or a single realm object.\ntype ImportedMultiRealm = RealmRepresentation | RealmRepresentation[];\n\ntype NonRoleResource = \"users\" | \"clients\" | \"groups\" | \"identityProviders\";\ntype RoleResource = \"realmRoles\" | \"clientRoles\";\ntype Resource = NonRoleResource | RoleResource;\n\ntype CollisionOption = \"FAIL\" | \"SKIP\" | \"OVERWRITE\";\n\ntype ResourceChecked = { [k in Resource]: boolean };\n\nconst INITIAL_RESOURCES: Readonly = {\n  users: false,\n  clients: false,\n  groups: false,\n  identityProviders: false,\n  realmRoles: false,\n  clientRoles: false,\n};\n\nexport const PartialImportDialog = (props: PartialImportProps) => {\n  const { adminClient } = useAdminClient();\n\n  const { t } = useTranslation();\n  const { realm } = useRealm();\n\n  const [importedFile, setImportedFile] = useState();\n  const isFileSelected = !!importedFile;\n  const [isRealmSelectOpen, setIsRealmSelectOpen] = useState(false);\n  const [isCollisionSelectOpen, setIsCollisionSelectOpen] = useState(false);\n  const [importInProgress, setImportInProgress] = useState(false);\n  const [collisionOption, setCollisionOption] =\n    useState(\"FAIL\");\n  const [targetRealm, setTargetRealm] = useState({});\n  const [importResponse, setImportResponse] = useState();\n  const { addError } = useAlerts();\n\n  const [resourcesToImport, setResourcesToImport] = useState(INITIAL_RESOURCES);\n  const isAnyResourceChecked = Object.values(resourcesToImport).some(\n    (checked) => checked,\n  );\n\n  const resetResourcesToImport = () => {\n    setResourcesToImport(INITIAL_RESOURCES);\n  };\n\n  const resetInputState = () => {\n    setImportedFile(undefined);\n    setTargetRealm({});\n    setCollisionOption(\"FAIL\");\n    resetResourcesToImport();\n  };\n\n  // when dialog opens or closes, clear state\n  useEffect(() => {\n    setImportInProgress(false);\n    setImportResponse(undefined);\n    resetInputState();\n  }, [props.open]);\n\n  const handleFileChange = (value: ImportedMultiRealm) => {\n    resetInputState();\n    setImportedFile(value);\n\n    if (!Array.isArray(value)) {\n      setTargetRealm(value);\n    } else if (value.length > 0) {\n      setTargetRealm(value[0]);\n    }\n  };\n\n  const handleRealmSelect = (realm: string | number | object) => {\n    setTargetRealm(realm as RealmRepresentation);\n    setIsRealmSelectOpen(false);\n    resetResourcesToImport();\n  };\n\n  const handleResourceCheckBox = (\n    checked: boolean,\n    event: FormEvent,\n  ) => {\n    const resource = event.currentTarget.name as Resource;\n\n    setResourcesToImport({\n      ...resourcesToImport,\n      [resource]: checked,\n    });\n  };\n\n  const realmSelectOptions = (realms: RealmRepresentation[]) =>\n    realms.map((realm) => (\n      \n        {realm.realm || realm.id}\n      \n    ));\n\n  const handleCollisionSelect = (option: string | number | object) => {\n    setCollisionOption(option as CollisionOption);\n    setIsCollisionSelectOpen(false);\n  };\n\n  const collisionOptions = () => {\n    return [\n      \n        {t(\"FAIL\")}\n      ,\n      \n        {t(\"SKIP\")}\n      ,\n      \n        {t(\"OVERWRITE\")}\n      ,\n    ];\n  };\n\n  const targetHasResources = () => {\n    return (\n      targetHasResource(\"users\") ||\n      targetHasResource(\"groups\") ||\n      targetHasResource(\"clients\") ||\n      targetHasResource(\"identityProviders\") ||\n      targetHasRealmRoles() ||\n      targetHasClientRoles()\n    );\n  };\n\n  const targetHasResource = (resource: NonRoleResource) => {\n    const value = targetRealm[resource];\n    return value !== undefined && value.length > 0;\n  };\n\n  const targetHasRealmRoles = () => {\n    const value = targetRealm.roles?.realm;\n    return value !== undefined && value.length > 0;\n  };\n\n  const targetHasClientRoles = () => {\n    const value = targetRealm.roles?.client;\n    return value !== undefined && Object.keys(value).length > 0;\n  };\n\n  const itemCount = (resource: Resource) => {\n    if (!isFileSelected) return 0;\n\n    if (resource === \"realmRoles\") {\n      return targetRealm.roles?.realm?.length ?? 0;\n    }\n\n    if (resource === \"clientRoles\") {\n      return targetHasClientRoles()\n        ? clientRolesCount(targetRealm.roles!.client!)\n        : 0;\n    }\n\n    return targetRealm[resource]?.length ?? 0;\n  };\n\n  const clientRolesCount = (\n    clientRoles: Record,\n  ) =>\n    Object.values(clientRoles).reduce((total, role) => total + role.length, 0);\n\n  const resourceDataListItem = (\n    resource: Resource,\n    resourceDisplayName: string,\n  ) => {\n    return (\n      \n        \n          \n                \n                    handleResourceCheckBox(checked, event)\n                  }\n                  data-testid={resource + \"-checkbox\"}\n                />\n              ,\n            ]}\n          />\n        \n      \n    );\n  };\n\n  const jsonForImport = () => {\n    const jsonToImport: PartialImportRealmRepresentation = {\n      ifResourceExists: collisionOption,\n      id: targetRealm.id,\n      realm: targetRealm.realm,\n    };\n\n    if (resourcesToImport[\"users\"]) jsonToImport.users = targetRealm.users;\n    if (resourcesToImport[\"groups\"]) jsonToImport.groups = targetRealm.groups;\n    if (resourcesToImport[\"identityProviders\"])\n      jsonToImport.identityProviders = targetRealm.identityProviders;\n    if (resourcesToImport[\"clients\"])\n      jsonToImport.clients = targetRealm.clients;\n    if (resourcesToImport[\"realmRoles\"] || resourcesToImport[\"clientRoles\"]) {\n      jsonToImport.roles = targetRealm.roles;\n      if (!resourcesToImport[\"realmRoles\"]) delete jsonToImport.roles?.realm;\n      if (!resourcesToImport[\"clientRoles\"]) delete jsonToImport.roles?.client;\n    }\n    return jsonToImport;\n  };\n\n  async function doImport() {\n    if (importInProgress) return;\n\n    setImportInProgress(true);\n\n    try {\n      const importResults = await adminClient.realms.partialImport({\n        realm,\n        rep: jsonForImport(),\n      });\n      setImportResponse(importResults);\n    } catch (error) {\n      addError(\"importFail\", error);\n    }\n\n    setImportInProgress(false);\n  }\n\n  const importModal = () => {\n    return (\n       {\n              doImport();\n            }}\n          >\n            {t(\"import\")}\n          ,\n           {\n              props.toggleDialog();\n            }}\n          >\n            {t(\"cancel\")}\n          ,\n        ]}\n      >\n        \n          \n            \n              {t(\"partialImportHeaderText\")}\n            \n          \n          \n            \n          \n\n          {isFileSelected && targetHasResources() && (\n            <>\n              \n                \n              \n              {Array.isArray(importedFile) && importedFile.length > 1 && (\n                \n                  {t(\"selectRealm\")}:\n                   setIsRealmSelectOpen(!isRealmSelectOpen)}\n                    onSelect={(value) => handleRealmSelect(value)}\n                    placeholderText={targetRealm.realm || targetRealm.id}\n                  >\n                    {realmSelectOptions(importedFile)}\n                  \n                \n              )}\n              \n                {t(\"chooseResources\")}:\n                \n                  {targetHasResource(\"users\") &&\n                    resourceDataListItem(\"users\", t(\"users\"))}\n                  {targetHasResource(\"groups\") &&\n                    resourceDataListItem(\"groups\", t(\"groups\"))}\n                  {targetHasResource(\"clients\") &&\n                    resourceDataListItem(\"clients\", t(\"clients\"))}\n                  {targetHasResource(\"identityProviders\") &&\n                    resourceDataListItem(\n                      \"identityProviders\",\n                      t(\"identityProviders\"),\n                    )}\n                  {targetHasRealmRoles() &&\n                    resourceDataListItem(\"realmRoles\", t(\"realmRoles\"))}\n                  {targetHasClientRoles() &&\n                    resourceDataListItem(\"clientRoles\", t(\"clientRoles\"))}\n                \n              \n              \n                {t(\"selectIfResourceExists\")}:\n                 {\n                    setIsCollisionSelectOpen(!isCollisionSelectOpen);\n                  }}\n                  onSelect={handleCollisionSelect}\n                  placeholderText={t(collisionOption)}\n                >\n                  {collisionOptions()}\n                \n              \n            \n          )}\n        \n      \n    );\n  };\n\n  const importCompleteMessage = () => {\n    return `${t(\"importAdded\", {\n      count: importResponse?.added,\n    })}  ${t(\"importSkipped\", {\n      count: importResponse?.skipped,\n    })} ${t(\"importOverwritten\", {\n      count: importResponse?.overwritten,\n    })}`;\n  };\n\n  const loader = async (first = 0, max = 15) => {\n    if (!importResponse) {\n      return [];\n    }\n\n    const last = Math.min(first + max, importResponse.results.length);\n\n    return importResponse.results.slice(first, last);\n  };\n\n  const ActionLabel = (importRecord: PartialImportResult) => {\n    switch (importRecord.action) {\n      case \"ADDED\":\n        return (\n          \n        );\n      case \"SKIPPED\":\n        return (\n          \n        );\n      case \"OVERWRITTEN\":\n        return (\n          \n        );\n      default:\n        return \"\";\n    }\n  };\n\n  const TypeRenderer = (importRecord: PartialImportResult) => {\n    const typeMap = new Map([\n      [\"CLIENT\", t(\"clients\")],\n      [\"REALM_ROLE\", t(\"realmRoles\")],\n      [\"USER\", t(\"users\")],\n      [\"CLIENT_ROLE\", t(\"clientRoles\")],\n      [\"IDP\", t(\"identityProviders\")],\n      [\"GROUP\", t(\"groups\")],\n    ]);\n\n    return {typeMap.get(importRecord.resourceType)};\n  };\n\n  const importCompletedModal = () => {\n    return (\n       {\n              props.toggleDialog();\n            }}\n          >\n            {t(\"close\")}\n          ,\n        ]}\n      >\n        \n        \n      \n    );\n  };\n\n  if (!importResponse) {\n    return importModal();\n  }\n\n  return importCompletedModal();\n};\n","import type ClientPolicyRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientPolicyRepresentation\";\nimport { CodeEditor, Language } from \"@patternfly/react-code-editor\";\nimport {\n  AlertVariant,\n  Button,\n  ButtonVariant,\n  Divider,\n  Flex,\n  FlexItem,\n  PageSection,\n  Radio,\n  Switch,\n  Title,\n  ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { omit } from \"lodash-es\";\nimport { useState } from \"react\";\nimport { Controller, useForm, type UseFormReturn } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } 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 {\n  Action,\n  KeycloakDataTable,\n} from \"../components/table-toolbar/KeycloakDataTable\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { prettyPrintJSON } from \"../util\";\nimport { useFetch } from \"../utils/useFetch\";\nimport { toAddClientPolicy } from \"./routes/AddClientPolicy\";\nimport { toClientPolicies } from \"./routes/ClientPolicies\";\nimport { toEditClientPolicy } from \"./routes/EditClientPolicy\";\n\nimport \"./realm-settings-section.css\";\n\ntype ClientPolicy = ClientPolicyRepresentation & {\n  global?: boolean;\n};\n\nexport const PoliciesTab = () => {\n  const { adminClient } = useAdminClient();\n\n  const { t } = useTranslation();\n  const { addAlert, addError } = useAlerts();\n  const { realm } = useRealm();\n  const navigate = useNavigate();\n  const [show, setShow] = useState(false);\n  const [policies, setPolicies] = useState();\n  const [selectedPolicy, setSelectedPolicy] = useState();\n  const [key, setKey] = useState(0);\n  const [code, setCode] = useState();\n  const [tablePolicies, setTablePolicies] = useState();\n  const refresh = () => setKey(key + 1);\n\n  const form = useForm>({ mode: \"onChange\" });\n\n  useFetch(\n    () =>\n      adminClient.clientPolicies.listPolicies({\n        includeGlobalPolicies: true,\n      }),\n    (allPolicies) => {\n      const globalPolicies = allPolicies.globalPolicies?.map(\n        (globalPolicies) => ({\n          ...globalPolicies,\n          global: true,\n        }),\n      );\n\n      const policies = allPolicies.policies?.map((policies) => ({\n        ...policies,\n        global: false,\n      }));\n\n      const allClientPolicies = globalPolicies?.concat(policies ?? []);\n\n      setPolicies(allClientPolicies),\n        setTablePolicies(allClientPolicies || []),\n        setCode(prettyPrintJSON(allClientPolicies));\n    },\n    [key],\n  );\n\n  const loader = async () => policies ?? [];\n\n  const saveStatus = async () => {\n    const switchValues = form.getValues();\n\n    const updatedPolicies = policies\n      ?.filter((policy) => {\n        return !policy.global;\n      })\n      .map((policy) => {\n        const enabled = switchValues[policy.name!];\n        const enabledPolicy = {\n          ...policy,\n          enabled,\n        };\n        delete enabledPolicy.global;\n        return enabledPolicy;\n      });\n\n    try {\n      await adminClient.clientPolicies.updatePolicy({\n        policies: updatedPolicies,\n      });\n      navigate(toClientPolicies({ realm, tab: \"policies\" }));\n      addAlert(t(\"updateClientPolicySuccess\"), AlertVariant.success);\n    } catch (error) {\n      addError(\"updateClientPolicyError\", error);\n    }\n  };\n\n  const normalizePolicy = (policy: ClientPolicy): ClientPolicyRepresentation =>\n    omit(policy, \"global\");\n\n  const save = async () => {\n    if (!code) {\n      return;\n    }\n\n    try {\n      const obj: ClientPolicy[] = JSON.parse(code);\n\n      const changedPolicies = obj\n        .filter((policy) => !policy.global)\n        .map((policy) => normalizePolicy(policy));\n\n      const changedGlobalPolicies = obj\n        .filter((policy) => policy.global)\n        .map((policy) => normalizePolicy(policy));\n\n      try {\n        await adminClient.clientPolicies.updatePolicy({\n          policies: changedPolicies,\n          globalPolicies: changedGlobalPolicies,\n        });\n        addAlert(t(\"updateClientPoliciesSuccess\"), AlertVariant.success);\n        refresh();\n      } catch (error) {\n        addError(\"updateClientPoliciesError\", error);\n      }\n    } catch (error) {\n      console.warn(\"Invalid json, ignoring value using {}\");\n      addError(\"invalidJsonClientPoliciesError\", error);\n    }\n  };\n\n  const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n    titleKey: t(\"deleteClientPolicyConfirmTitle\"),\n    messageKey: t(\"deleteClientPolicyConfirm\", {\n      policyName: selectedPolicy?.name,\n    }),\n    continueButtonLabel: t(\"delete\"),\n    continueButtonVariant: ButtonVariant.danger,\n    onConfirm: async () => {\n      const updatedPolicies = policies\n        ?.filter((policy) => {\n          return !policy.global && policy.name !== selectedPolicy?.name;\n        })\n        .map((policy) => {\n          const newPolicy = { ...policy };\n          delete newPolicy.global;\n          return newPolicy;\n        });\n\n      try {\n        await adminClient.clientPolicies.updatePolicy({\n          policies: updatedPolicies,\n        });\n        addAlert(t(\"deleteClientPolicySuccess\"), AlertVariant.success);\n        refresh();\n      } catch (error) {\n        addError(t(\"deleteClientPolicyError\"), error);\n      }\n    },\n  });\n\n  if (!policies) {\n    return ;\n  }\n  return (\n    <>\n      \n      \n        \n          \n            \n              {t(\"policiesConfigType\")}\n            \n          \n          \n             setShow(false)}\n              label={t(\"policiesConfigTypes.formView\")}\n              id=\"formView-policiesView\"\n              data-testid=\"formView-policiesView\"\n              className=\"kc-form-radio-btn pf-v5-u-mr-sm pf-v5-u-ml-sm\"\n            />\n          \n          \n             setShow(true)}\n              label={t(\"policiesConfigTypes.jsonEditor\")}\n              id=\"jsonEditor-policiesView\"\n              data-testid=\"jsonEditor-policiesView\"\n              className=\"kc-editor-radio-btn\"\n            />\n          \n        \n      \n      \n      {!show ? (\n         navigate(toAddClientPolicy({ realm }))}\n            />\n          }\n          ariaLabelKey=\"clientPolicies\"\n          searchPlaceholderKey=\"clientPolicySearch\"\n          loader={loader}\n          toolbarItem={\n            \n               (\n                  \n                )}\n                data-testid=\"createPolicy\"\n              >\n                {t(\"createClientPolicy\")}\n              \n            \n          }\n          isRowDisabled={(value) => !!value.global}\n          actions={[\n            {\n              title: t(\"delete\"),\n              onRowClick: (item) => {\n                toggleDeleteDialog();\n                setSelectedPolicy(item);\n              },\n            } as Action,\n          ]}\n          columns={[\n            {\n              name: \"name\",\n              cellRenderer: ({ name }: ClientPolicyRepresentation) => (\n                \n                  {name}\n                \n              ),\n            },\n            {\n              name: \"enabled\",\n              displayKey: \"status\",\n              cellRenderer: (clientPolicy) => (\n                 {\n                    form.setValue(clientPolicy.name!, false);\n                    saveStatus();\n                  }}\n                />\n              ),\n            },\n            {\n              name: \"description\",\n            },\n          ]}\n        />\n      ) : (\n        <>\n          
\n \n
\n
\n \n {t(\"save\")}\n \n {\n setCode(prettyPrintJSON(tablePolicies));\n }}\n >\n {t(\"reload\")}\n \n
\n \n )}\n \n );\n};\n\ntype SwitchRendererProps = {\n clientPolicy: ClientPolicy;\n form: UseFormReturn>;\n saveStatus: () => void;\n onConfirm: () => void;\n};\n\nconst SwitchRenderer = ({\n clientPolicy,\n form,\n saveStatus,\n onConfirm,\n}: SwitchRendererProps) => {\n const { t } = useTranslation();\n const [toggleDisableDialog, DisableConfirm] = useConfirmDialog({\n titleKey: \"disablePolicyConfirmTitle\",\n messageKey: \"disablePolicyConfirm\",\n continueButtonLabel: \"disable\",\n onConfirm,\n });\n\n return (\n <>\n \n (\n {\n if (!value) {\n toggleDisableDialog();\n } else {\n field.onChange(value);\n saveStatus();\n }\n }}\n aria-label={clientPolicy.name!}\n />\n )}\n />\n \n );\n};\n","import type ClientProfileRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientProfileRepresentation\";\nimport { CodeEditor, Language } from \"@patternfly/react-code-editor\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n ButtonVariant,\n Divider,\n Flex,\n FlexItem,\n FormGroup,\n Label,\n PageSection,\n Radio,\n Title,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { omit } from \"lodash-es\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\nimport { useAdminClient } 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 {\n Action,\n KeycloakDataTable,\n} from \"../components/table-toolbar/KeycloakDataTable\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { prettyPrintJSON } from \"../util\";\nimport { useFetch } from \"../utils/useFetch\";\nimport { toAddClientProfile } from \"./routes/AddClientProfile\";\nimport { toClientProfile } from \"./routes/ClientProfile\";\n\nimport \"./realm-settings-section.css\";\n\ntype ClientProfile = ClientProfileRepresentation & {\n global: boolean;\n};\n\nexport default function ProfilesTab() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const { realm } = useRealm();\n const { addAlert, addError } = useAlerts();\n const [tableProfiles, setTableProfiles] = useState();\n const [globalProfiles, setGlobalProfiles] =\n useState();\n const [selectedProfile, setSelectedProfile] = useState();\n const [show, setShow] = useState(false);\n const [code, setCode] = useState();\n const [key, setKey] = useState(0);\n\n useFetch(\n () =>\n adminClient.clientPolicies.listProfiles({\n includeGlobalProfiles: true,\n }),\n (allProfiles) => {\n setGlobalProfiles(allProfiles.globalProfiles);\n\n const globalProfiles = allProfiles.globalProfiles?.map(\n (globalProfiles) => ({\n ...globalProfiles,\n global: true,\n }),\n );\n\n const profiles = allProfiles.profiles?.map((profiles) => ({\n ...profiles,\n global: false,\n }));\n\n const allClientProfiles = globalProfiles?.concat(profiles ?? []);\n setTableProfiles(allClientProfiles || []);\n setCode(JSON.stringify(allClientProfiles, null, 2));\n },\n [key],\n );\n\n const loader = async () => tableProfiles ?? [];\n\n const normalizeProfile = (\n profile: ClientProfile,\n ): ClientProfileRepresentation => omit(profile, \"global\");\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: t(\"deleteClientProfileConfirmTitle\"),\n messageKey: t(\"deleteClientProfileConfirm\", {\n profileName: selectedProfile?.name,\n }),\n continueButtonLabel: t(\"delete\"),\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n const updatedProfiles = tableProfiles\n ?.filter(\n (profile) =>\n profile.name !== selectedProfile?.name && !profile.global,\n )\n .map((profile) =>\n normalizeProfile(profile),\n );\n\n try {\n await adminClient.clientPolicies.createProfiles({\n profiles: updatedProfiles,\n globalProfiles,\n });\n addAlert(t(\"deleteClientSuccess\"), AlertVariant.success);\n setKey(key + 1);\n } catch (error) {\n addError(t(\"deleteClientError\"), error);\n }\n },\n });\n\n const cellFormatter = (row: ClientProfile) => (\n \n {row.name} {row.global && }\n \n );\n\n if (!tableProfiles) {\n return ;\n }\n\n const save = async () => {\n if (!code) {\n return;\n }\n\n try {\n const obj: ClientProfile[] = JSON.parse(code);\n const changedProfiles = obj\n .filter((profile) => !profile.global)\n .map((profile) => normalizeProfile(profile));\n\n const changedGlobalProfiles = obj\n .filter((profile) => profile.global)\n .map((profile) => normalizeProfile(profile));\n\n try {\n await adminClient.clientPolicies.createProfiles({\n profiles: changedProfiles,\n globalProfiles: changedGlobalProfiles,\n });\n addAlert(t(\"updateClientProfilesSuccess\"), AlertVariant.success);\n setKey(key + 1);\n } catch (error) {\n addError(\"updateClientProfilesError\", error);\n }\n } catch (error) {\n addError(\"invalidJsonClientProfilesError\", error);\n }\n };\n\n return (\n <>\n \n \n \n \n \n {t(\"profilesConfigType\")}\n \n \n \n setShow(false)}\n label={t(\"profilesConfigTypes.formView\")}\n id=\"formView-profilesView\"\n className=\"kc-form-radio-btn pf-v5-u-mr-sm pf-v5-u-ml-sm\"\n data-testid=\"formView-profilesView\"\n />\n \n \n setShow(true)}\n label={t(\"profilesConfigTypes.jsonEditor\")}\n id=\"jsonEditor-profilesView\"\n className=\"kc-editor-radio-btn\"\n data-testid=\"jsonEditor-profilesView\"\n />\n \n \n \n \n {!show ? (\n \n (\n \n )}\n data-testid=\"createProfile\"\n >\n {t(\"createClientProfile\")}\n \n \n }\n isRowDisabled={(value) => value.global}\n actions={[\n {\n title: t(\"delete\"),\n onRowClick: (profile) => {\n setSelectedProfile(profile);\n toggleDeleteDialog();\n },\n } as Action,\n ]}\n columns={[\n {\n name: \"name\",\n displayKey: t(\"name\"),\n cellRenderer: cellFormatter,\n },\n {\n name: \"description\",\n displayKey: t(\"clientProfileDescription\"),\n },\n ]}\n emptyState={\n \n }\n />\n ) : (\n \n
\n {\n setCode(value ?? \"\");\n }}\n />\n
\n \n
\n \n {t(\"save\")}\n \n {\n setCode(prettyPrintJSON(tableProfiles));\n }}\n data-testid=\"jsonEditor-reloadBtn\"\n >\n {t(\"reload\")}\n \n
\n
\n
\n )}\n \n );\n}\n","import type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport {\n ActionGroup,\n Button,\n FormGroup,\n PageSection,\n Switch,\n} from \"@patternfly/react-core\";\nimport { useEffect } from \"react\";\nimport { Controller, useForm, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { FormPanel, HelpItem } from \"@keycloak/keycloak-ui-shared\";\nimport { FormAccess } from \"../components/form/FormAccess\";\nimport { TimeSelector } from \"../components/time-selector/TimeSelector\";\nimport { convertToFormValues } from \"../util\";\n\nimport \"./realm-settings-section.css\";\n\ntype RealmSettingsSessionsTabProps = {\n realm: RealmRepresentation;\n save: (realm: RealmRepresentation) => void;\n};\n\nexport const RealmSettingsSessionsTab = ({\n realm,\n save,\n}: RealmSettingsSessionsTabProps) => {\n const { t } = useTranslation();\n\n const { setValue, control, handleSubmit, formState } =\n useForm();\n\n const offlineSessionMaxEnabled = useWatch({\n control,\n name: \"offlineSessionMaxLifespanEnabled\",\n });\n\n const setupForm = () => {\n convertToFormValues(realm, setValue);\n };\n\n useEffect(setupForm, []);\n\n return (\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 )}\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 >\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 {offlineSessionMaxEnabled && (\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 )}\n />\n \n \n \n {t(\"save\")}\n \n \n \n \n \n \n );\n};\n","import type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport {\n HelpItem,\n KeycloakSelect,\n SelectVariant,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n Button,\n FormGroup,\n PageSection,\n SelectOption,\n} from \"@patternfly/react-core\";\nimport { useEffect, useState } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { FormAccess } from \"../components/form/FormAccess\";\nimport { useServerInfo } from \"../context/server-info/ServerInfoProvider\";\nimport { convertToFormValues } from \"../util\";\n\ntype RealmSettingsThemesTabProps = {\n realm: RealmRepresentation;\n save: (realm: RealmRepresentation) => void;\n};\n\nexport const RealmSettingsThemesTab = ({\n realm,\n save,\n}: RealmSettingsThemesTabProps) => {\n const { t } = useTranslation();\n\n const [loginThemeOpen, setLoginThemeOpen] = useState(false);\n const [accountThemeOpen, setAccountThemeOpen] = useState(false);\n const [adminUIThemeOpen, setAdminUIThemeOpen] = useState(false);\n const [emailThemeOpen, setEmailThemeOpen] = useState(false);\n\n const { control, handleSubmit, setValue } = useForm();\n const themeTypes = useServerInfo().themes!;\n\n const setupForm = () => {\n convertToFormValues(realm, setValue);\n };\n useEffect(setupForm, []);\n\n return (\n \n \n \n }\n >\n (\n setLoginThemeOpen(!loginThemeOpen)}\n onSelect={(value) => {\n field.onChange(value as string);\n setLoginThemeOpen(false);\n }}\n selections={field.value}\n variant={SelectVariant.single}\n isOpen={loginThemeOpen}\n placeholderText={t(\"selectATheme\")}\n data-testid=\"select-login-theme\"\n aria-label={t(\"selectLoginTheme\")}\n >\n {themeTypes.login.map((theme, idx) => (\n \n {t(theme.name)}\n \n ))}\n \n )}\n />\n \n \n }\n >\n (\n setAccountThemeOpen(!accountThemeOpen)}\n onSelect={(value) => {\n field.onChange(value as string);\n setAccountThemeOpen(false);\n }}\n selections={field.value}\n variant={SelectVariant.single}\n aria-label={t(\"selectAccountTheme\")}\n isOpen={accountThemeOpen}\n placeholderText={t(\"selectATheme\")}\n data-testid=\"select-account-theme\"\n >\n {themeTypes.account\n .filter((theme) => theme.name !== \"base\")\n .map((theme, idx) => (\n \n {t(theme.name)}\n \n ))}\n \n )}\n />\n \n \n }\n >\n (\n setAdminUIThemeOpen(!adminUIThemeOpen)}\n onSelect={(value) => {\n field.onChange(value as string);\n setAdminUIThemeOpen(false);\n }}\n selections={field.value}\n variant={SelectVariant.single}\n isOpen={adminUIThemeOpen}\n placeholderText={t(\"selectATheme\")}\n data-testid=\"select-admin-theme\"\n aria-label={t(\"selectAdminTheme\")}\n >\n {themeTypes.admin\n .filter((theme) => theme.name !== \"base\")\n .map((theme, idx) => (\n \n {t(theme.name)}\n \n ))}\n \n )}\n />\n \n \n }\n >\n (\n setEmailThemeOpen(!emailThemeOpen)}\n onSelect={(value) => {\n field.onChange(value as string);\n setEmailThemeOpen(false);\n }}\n selections={field.value}\n variant={SelectVariant.single}\n isOpen={emailThemeOpen}\n placeholderText={t(\"selectATheme\")}\n data-testid=\"select-email-theme\"\n aria-label={t(\"selectEmailTheme\")}\n >\n {themeTypes.email.map((theme, idx) => (\n \n {t(theme.name)}\n \n ))}\n \n )}\n />\n \n \n \n \n \n \n \n );\n};\n","import type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport {\n FormPanel,\n HelpItem,\n KeycloakSelect,\n SelectVariant,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n Button,\n FormGroup,\n FormHelperText,\n HelperText,\n HelperTextItem,\n NumberInput,\n PageSection,\n SelectOption,\n Switch,\n Text,\n TextInput,\n TextVariants,\n} from \"@patternfly/react-core\";\nimport { useEffect, useState } from \"react\";\nimport { Controller, useForm, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { FormAccess } from \"../components/form/FormAccess\";\nimport {\n TimeSelector,\n toHumanFormat,\n} from \"../components/time-selector/TimeSelector\";\nimport { useServerInfo } from \"../context/server-info/ServerInfoProvider\";\nimport { useWhoAmI } from \"../context/whoami/WhoAmI\";\nimport { beerify, convertToFormValues, sortProviders } from \"../util\";\nimport useIsFeatureEnabled, { Feature } from \"../utils/useIsFeatureEnabled\";\n\nimport \"./realm-settings-section.css\";\n\ntype RealmSettingsSessionsTabProps = {\n realm: RealmRepresentation;\n save: (realm: RealmRepresentation) => void;\n reset?: () => void;\n};\n\nexport const RealmSettingsTokensTab = ({\n realm,\n reset,\n save,\n}: RealmSettingsSessionsTabProps) => {\n const { t } = useTranslation();\n const serverInfo = useServerInfo();\n const isFeatureEnabled = useIsFeatureEnabled();\n const { whoAmI } = useWhoAmI();\n\n const [defaultSigAlgDrpdwnIsOpen, setDefaultSigAlgDrpdwnOpen] =\n useState(false);\n\n const defaultSigAlgOptions = sortProviders(\n serverInfo.providers![\"signature\"].providers,\n );\n\n const form = useForm();\n const { setValue, control } = form;\n\n const offlineSessionMaxEnabled = useWatch({\n control,\n name: \"offlineSessionMaxLifespanEnabled\",\n defaultValue: realm.offlineSessionMaxLifespanEnabled,\n });\n\n const ssoSessionIdleTimeout = useWatch({\n control,\n name: \"ssoSessionIdleTimeout\",\n defaultValue: 36000,\n });\n\n const revokeRefreshToken = useWatch({\n control,\n name: \"revokeRefreshToken\",\n defaultValue: false,\n });\n\n useEffect(() => {\n convertToFormValues(realm, setValue);\n }, []);\n\n return (\n \n \n \n \n }\n >\n (\n \n setDefaultSigAlgDrpdwnOpen(!defaultSigAlgDrpdwnIsOpen)\n }\n onSelect={(value) => {\n field.onChange(value.toString());\n setDefaultSigAlgDrpdwnOpen(false);\n }}\n selections={field.value?.toString()}\n variant={SelectVariant.single}\n aria-label={t(\"defaultSigAlg\")}\n isOpen={defaultSigAlgDrpdwnIsOpen}\n data-testid=\"select-default-sig-alg\"\n >\n {defaultSigAlgOptions!.map((p, idx) => (\n \n {p}\n \n ))}\n \n )}\n />\n \n\n {isFeatureEnabled(Feature.DeviceFlow) && (\n <>\n \n }\n >\n (\n \n )}\n />\n \n \n }\n >\n (\n field.onChange(Number(field?.value) + 1)}\n onMinus={() =>\n field.onChange(\n Number(field?.value) > 0\n ? Number(field?.value) - 1\n : 0,\n )\n }\n onChange={(event) => {\n const newValue = Number(event.currentTarget.value);\n field.onChange(!isNaN(newValue) ? newValue : 0);\n }}\n placeholder={t(\"oAuthDevicePollingInterval\")}\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 (\n \n )}\n />\n \n {revokeRefreshToken && (\n \n }\n fieldId=\"refreshTokenMaxReuse\"\n >\n (\n field.onChange(field.value! + 1)}\n onMinus={() => field.onChange(field.value! - 1)}\n onChange={(event) =>\n field.onChange(\n Number((event.target as HTMLInputElement).value),\n )\n }\n />\n )}\n />\n \n )}\n \n \n \n \n \n }\n >\n (\n ssoSessionIdleTimeout!\n ? \"warning\"\n : \"default\"\n }\n className=\"kc-access-token-lifespan\"\n data-testid=\"access-token-lifespan-input\"\n aria-label=\"access-token-lifespan\"\n value={field.value!}\n onChange={field.onChange}\n units={[\"minute\", \"hour\", \"day\"]}\n />\n )}\n />\n \n \n \n {t(\"recommendedSsoTimeout\", {\n time: toHumanFormat(\n ssoSessionIdleTimeout!,\n whoAmI.getLocale(),\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 {offlineSessionMaxEnabled && (\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 )}\n />\n \n \n {t(\"overrideActionTokens\")}\n \n \n }\n >\n (\n field.onChange(value.toString())}\n units={[\"minute\", \"hour\", \"day\"]}\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 />\n \n \n \n {t(\"save\")}\n \n \n \n \n \n \n );\n};\n","import type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport { useHelp } from \"@keycloak/keycloak-ui-shared\";\nimport {\n AlertVariant,\n Button,\n ButtonVariant,\n Dropdown,\n DropdownItem,\n DropdownList,\n MenuToggle,\n Popover,\n Text,\n TextContent,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { EllipsisVIcon, QuestionCircleIcon } from \"@patternfly/react-icons\";\nimport { useState } from \"react\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../components/confirm-dialog/ConfirmDialog\";\nimport { GroupPickerDialog } from \"../components/group/GroupPickerDialog\";\nimport { KeycloakSpinner } from \"../components/keycloak-spinner/KeycloakSpinner\";\nimport { ListEmptyState } from \"../components/list-empty-state/ListEmptyState\";\nimport {\n Action,\n KeycloakDataTable,\n} from \"../components/table-toolbar/KeycloakDataTable\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { toUserFederation } from \"../user-federation/routes/UserFederation\";\nimport { useFetch } from \"../utils/useFetch\";\nimport useToggle from \"../utils/useToggle\";\nimport { useAccess } from \"../context/access/Access\";\n\nexport const DefaultsGroupsTab = () => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n\n const [isKebabOpen, toggleKebab] = useToggle();\n const [isGroupPickerOpen, toggleGroupPicker] = useToggle();\n const [defaultGroups, setDefaultGroups] = useState();\n const [selectedRows, setSelectedRows] = useState([]);\n\n const [key, setKey] = useState(0);\n const [load, setLoad] = useState(0);\n const reload = () => setLoad(load + 1);\n\n const { realm } = useRealm();\n const { addAlert, addError } = useAlerts();\n const { enabled } = useHelp();\n\n const { hasAccess } = useAccess();\n const canAddOrRemoveGroups = hasAccess(\"view-users\", \"manage-realm\");\n\n useFetch(\n () => adminClient.realms.getDefaultGroups({ realm }),\n (groups) => {\n setDefaultGroups(groups);\n setKey(key + 1);\n },\n [load],\n );\n\n const loader = () => Promise.resolve(defaultGroups!);\n\n const removeGroup = async () => {\n try {\n await Promise.all(\n selectedRows.map((group) =>\n adminClient.realms.removeDefaultGroup({\n realm,\n id: group.id!,\n }),\n ),\n );\n addAlert(\n t(\"groupRemove\", { count: selectedRows.length }),\n AlertVariant.success,\n );\n setSelectedRows([]);\n } catch (error) {\n addError(\"groupRemoveError\", error);\n }\n reload();\n };\n\n const addGroups = async (groups: GroupRepresentation[]) => {\n try {\n await Promise.all(\n groups.map((group) =>\n adminClient.realms.addDefaultGroup({\n realm,\n id: group.id!,\n }),\n ),\n );\n addAlert(\n t(\"defaultGroupAdded\", { count: groups.length }),\n AlertVariant.success,\n );\n } catch (error) {\n addError(\"defaultGroupAddedError\", error);\n }\n reload();\n };\n\n const [toggleRemoveDialog, RemoveDialog] = useConfirmDialog({\n titleKey: t(\"removeConfirmTitle\", { count: selectedRows.length }),\n messageKey: t(\"removeConfirm\", { count: selectedRows.length }),\n continueButtonLabel: \"delete\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: removeGroup,\n });\n\n if (!defaultGroups) {\n return ;\n }\n\n return (\n <>\n \n {isGroupPickerOpen && (\n {\n addGroups(groups || []);\n toggleGroupPicker();\n }}\n onClose={toggleGroupPicker}\n />\n )}\n {enabled && (\n \n {\" \"}\n .\n \n }\n >\n \n \n {t(\"whatIsDefaultGroups\")}\n \n \n \n )}\n setSelectedRows([...rows])}\n loader={loader}\n ariaLabelKey=\"defaultGroups\"\n searchPlaceholderKey=\"searchForGroups\"\n toolbarItem={\n canAddOrRemoveGroups && (\n <>\n \n \n {t(\"addGroups\")}\n \n \n \n (\n \n \n \n )}\n isOpen={isKebabOpen}\n shouldFocusToggleOnSelect\n >\n \n {\n toggleRemoveDialog();\n toggleKebab();\n }}\n >\n {t(\"remove\")}\n \n \n \n \n \n )\n }\n actions={\n canAddOrRemoveGroups\n ? [\n {\n title: t(\"remove\"),\n onRowClick: (group) => {\n setSelectedRows([group]);\n toggleRemoveDialog();\n return Promise.resolve(false);\n },\n } as Action,\n ]\n : []\n }\n columns={[\n {\n name: \"name\",\n displayKey: \"groupName\",\n },\n {\n name: \"path\",\n displayKey: \"path\",\n },\n ]}\n emptyState={\n \n {\" \"}\n \n Add groups...\n \n }\n primaryActionText={canAddOrRemoveGroups ? t(\"addGroups\") : \"\"}\n onPrimaryAction={toggleGroupPicker}\n />\n }\n />\n \n );\n};\n","import type RoleRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/roleRepresentation\";\nimport { AlertVariant, Tab, Tabs, TabTitleText } from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { RoleMapping } from \"../components/role-mapping/RoleMapping\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { DefaultsGroupsTab } from \"./DefaultGroupsTab\";\n\nexport const UserRegistration = () => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const [activeTab, setActiveTab] = useState(10);\n const { realmRepresentation: realm } = useRealm();\n const [key, setKey] = useState(0);\n\n const { addAlert, addError } = useAlerts();\n const { realm: realmName } = useRealm();\n\n const addComposites = async (composites: RoleRepresentation[]) => {\n const compositeArray = composites;\n\n try {\n await adminClient.roles.createComposite(\n { roleId: realm?.defaultRole!.id!, realm: realmName },\n compositeArray,\n );\n setKey(key + 1);\n addAlert(t(\"addAssociatedRolesSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"addAssociatedRolesError\", error);\n }\n };\n\n return (\n setActiveTab(key as number)}\n >\n {t(\"defaultRoles\")}}\n data-testid=\"default-roles-tab\"\n >\n addComposites(rows.map((r) => r.role))}\n />\n \n {t(\"defaultGroups\")}}\n data-testid=\"default-groups-tab\"\n >\n \n \n \n );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { Button, ToolbarItem } from \"@patternfly/react-core\";\n\nimport {\n Action,\n KeycloakDataTable,\n} from \"../../components/table-toolbar/KeycloakDataTable\";\nimport { ListEmptyState } from \"../../components/list-empty-state/ListEmptyState\";\n\nexport type EventType = {\n id: string;\n};\n\ntype EventsTypeTableProps = {\n ariaLabelKey?: string;\n eventTypes: string[];\n addTypes?: () => void;\n onSelect?: (value: EventType[]) => void;\n onDelete?: (value: EventType) => void;\n};\n\nexport function EventsTypeTable({\n ariaLabelKey = \"userEventsRegistered\",\n eventTypes,\n addTypes,\n onSelect,\n onDelete,\n}: EventsTypeTableProps) {\n const { t } = useTranslation();\n\n const data = eventTypes.map((type) => ({\n id: type,\n name: t(`eventTypes.${type}.name`),\n description: t(`eventTypes.${type}.description`),\n }));\n return (\n \n \n \n )\n }\n actions={\n !onDelete\n ? []\n : [\n {\n title: t(\"remove\"),\n onRowClick: onDelete,\n } as Action,\n ]\n }\n columns={[\n {\n name: \"name\",\n displayKey: \"eventType\",\n },\n {\n name: \"description\",\n displayKey: \"description\",\n },\n ]}\n emptyState={\n \n }\n />\n );\n}\n","import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Button, Modal, ModalVariant } from \"@patternfly/react-core\";\n\nimport { EventsTypeTable, EventType } from \"./EventsTypeTable\";\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\n\ntype AddEventTypesDialogProps = {\n onConfirm: (selected: EventType[]) => void;\n onClose: () => void;\n configured: string[];\n};\n\nexport const AddEventTypesDialog = ({\n onConfirm,\n onClose,\n configured,\n}: AddEventTypesDialogProps) => {\n const { t } = useTranslation();\n const { enums } = useServerInfo();\n\n const [selectedTypes, setSelectedTypes] = useState([]);\n return (\n onConfirm(selectedTypes)}\n >\n {t(\"add\")}\n ,\n \n {t(\"cancel\")}\n ,\n ]}\n >\n setSelectedTypes(selected)}\n eventTypes={enums![\"eventType\"].filter(\n (type) => !configured.includes(type),\n )}\n />\n \n );\n};\n","import {\n ActionGroup,\n Button,\n Divider,\n FormGroup,\n Switch,\n} from \"@patternfly/react-core\";\nimport { Controller, FormProvider, UseFormReturn } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"@keycloak/keycloak-ui-shared\";\nimport { DefaultSwitchControl } from \"../../components/SwitchControl\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { TimeSelectorControl } from \"../../components/time-selector/TimeSelectorControl\";\n\nexport type EventsType = \"admin\" | \"user\";\n\ntype EventConfigFormProps = {\n type: EventsType;\n form: UseFormReturn;\n reset: () => void;\n clear: () => void;\n};\n\nexport const EventConfigForm = ({\n type,\n form,\n reset,\n clear,\n}: EventConfigFormProps) => {\n const { t } = useTranslation();\n const {\n control,\n watch,\n setValue,\n formState: { isDirty },\n } = form;\n const eventKey = type === \"admin\" ? \"adminEventsEnabled\" : \"eventsEnabled\";\n const eventsEnabled: boolean = watch(eventKey);\n\n const [toggleDisableDialog, DisableConfirm] = useConfirmDialog({\n titleKey: \"events-disable-title\",\n messageKey: \"events-disable-confirm\",\n continueButtonLabel: \"confirm\",\n onConfirm: () => setValue(eventKey, false, { shouldDirty: true }),\n });\n\n return (\n \n \n \n }\n >\n (\n {\n if (!value) {\n toggleDisableDialog();\n } else {\n field.onChange(value);\n }\n }}\n aria-label={t(\"saveEvents\")}\n />\n )}\n />\n \n {eventsEnabled && (\n <>\n {type === \"admin\" && (\n \n )}\n \n \n )}\n \n \n {t(\"save\")}\n \n \n \n \n \n }\n >\n clear()}\n >\n {type === \"user\" ? t(\"clearUserEvents\") : t(\"clearAdminEvents\")}\n \n \n \n );\n};\n","import { ActionGroup, Button } from \"@patternfly/react-core\";\nimport { FormProvider, UseFormReturn } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { SelectControl, SelectVariant } from \"@keycloak/keycloak-ui-shared\";\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\n\ntype EventListenersFormProps = {\n form: UseFormReturn;\n reset: () => void;\n};\n\nexport const EventListenersForm = ({\n form,\n reset,\n}: EventListenersFormProps) => {\n const { t } = useTranslation();\n\n const serverInfo = useServerInfo();\n const eventListeners = serverInfo.providers?.eventsListener.providers;\n\n return (\n \n \n \n \n {t(\"save\")}\n \n \n {t(\"revert\")}\n \n \n \n );\n};\n","import type { RealmEventsConfigRepresentation } from \"@keycloak/keycloak-admin-client/lib/defs/realmEventsConfigRepresentation\";\nimport type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport {\n AlertVariant,\n ButtonVariant,\n PageSection,\n Tab,\n Tabs,\n TabTitleText,\n} from \"@patternfly/react-core\";\nimport { isEqual } from \"lodash-es\";\nimport { useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { convertToFormValues } from \"../../util\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport { AddEventTypesDialog } from \"./AddEventTypesDialog\";\nimport { EventConfigForm, EventsType } from \"./EventConfigForm\";\nimport { EventListenersForm } from \"./EventListenersForm\";\nimport { EventsTypeTable, EventType } from \"./EventsTypeTable\";\n\ntype EventsTabProps = {\n realm: RealmRepresentation;\n};\n\ntype EventsConfigForm = RealmEventsConfigRepresentation & {\n adminEventsExpiration?: number;\n};\n\nexport const EventsTab = ({ realm }: EventsTabProps) => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const form = useForm();\n const { setValue, handleSubmit } = form;\n\n const [key, setKey] = useState(0);\n const refresh = () => setKey(new Date().getTime());\n const [tableKey, setTableKey] = useState(0);\n const reload = () => setTableKey(new Date().getTime());\n\n const [activeTab, setActiveTab] = useState(\"event\");\n const [events, setEvents] = useState();\n const [type, setType] = useState();\n const [addEventType, setAddEventType] = useState(false);\n\n const { addAlert, addError } = useAlerts();\n const { realm: realmName } = useRealm();\n\n const setupForm = (eventConfig?: EventsConfigForm) => {\n setEvents(eventConfig);\n convertToFormValues(eventConfig || {}, setValue);\n };\n\n const clear = async (type: EventsType) => {\n setType(type);\n toggleDeleteDialog();\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"deleteEvents\",\n messageKey: \"deleteEventsConfirm\",\n continueButtonLabel: \"clear\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n switch (type) {\n case \"admin\":\n await adminClient.realms.clearAdminEvents({ realm: realmName });\n break;\n case \"user\":\n await adminClient.realms.clearEvents({ realm: realmName });\n break;\n }\n addAlert(t(`${type}-events-cleared`), AlertVariant.success);\n } catch (error) {\n addError(`${type}-events-cleared-error`, error);\n }\n },\n });\n\n useFetch(\n () => adminClient.realms.getConfigEvents({ realm: realmName }),\n (eventConfig) => {\n setupForm({\n ...eventConfig,\n adminEventsExpiration: realm.attributes?.adminEventsExpiration,\n });\n reload();\n },\n [key],\n );\n\n const save = async (config: EventsConfigForm) => {\n const updatedEventListener = !isEqual(\n events?.eventsListeners,\n config.eventsListeners,\n );\n\n const { adminEventsExpiration, ...eventConfig } = config;\n if (realm.attributes?.adminEventsExpiration !== adminEventsExpiration) {\n await adminClient.realms.update(\n { realm: realmName },\n {\n ...realm,\n attributes: { ...(realm.attributes || {}), adminEventsExpiration },\n },\n );\n }\n\n try {\n await adminClient.realms.updateConfigEvents(\n { realm: realmName },\n eventConfig,\n );\n setupForm({ ...events, ...eventConfig, adminEventsExpiration });\n addAlert(\n updatedEventListener\n ? t(\"saveEventListenersSuccess\")\n : t(\"eventConfigSuccessfully\"),\n AlertVariant.success,\n );\n } catch (error) {\n addError(\n updatedEventListener\n ? t(\"saveEventListenersError\")\n : t(\"eventConfigError\"),\n error,\n );\n }\n };\n\n const addEventTypes = async (eventTypes: EventType[]) => {\n const eventsTypes = eventTypes.map((type) => type.id);\n const enabledEvents = events!.enabledEventTypes?.concat(eventsTypes);\n await addEvents(enabledEvents);\n };\n\n const addEvents = async (events: string[] = []) => {\n const eventConfig = { ...form.getValues(), enabledEventTypes: events };\n await save(eventConfig);\n setAddEventType(false);\n refresh();\n };\n\n return (\n <>\n \n {addEventType && (\n addEventTypes(eventTypes)}\n configured={events?.enabledEventTypes || []}\n onClose={() => setAddEventType(false)}\n />\n )}\n setActiveTab(key as string)}\n >\n {t(\"eventListeners\")}}\n data-testid=\"rs-event-listeners-tab\"\n >\n \n \n setupForm(events)} />\n \n \n \n {t(\"userEventsSettings\")}}\n data-testid=\"rs-events-tab\"\n >\n \n \n setupForm(events)}\n clear={() => clear(\"user\")}\n />\n \n \n \n setAddEventType(true)}\n eventTypes={events?.enabledEventTypes || []}\n onDelete={(value) => {\n const enabledEventTypes = events?.enabledEventTypes?.filter(\n (e) => e !== value.id,\n );\n addEvents(enabledEventTypes);\n setEvents({ ...events, enabledEventTypes });\n }}\n />\n \n \n {t(\"adminEventsSettings\")}}\n data-testid=\"rs-admin-events-tab\"\n >\n \n \n setupForm(events)}\n clear={() => clear(\"admin\")}\n />\n \n \n \n \n \n );\n};\n","import type ComponentRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/componentRepresentation\";\nimport type { KeyMetadataRepresentation } from \"@keycloak/keycloak-admin-client/lib/defs/keyMetadataRepresentation\";\nimport { KeycloakSelect, SelectVariant } from \"@keycloak/keycloak-ui-shared\";\nimport {\n Button,\n ButtonVariant,\n PageSection,\n SelectOption,\n} from \"@patternfly/react-core\";\nimport { FilterIcon } from \"@patternfly/react-icons\";\nimport { cellWidth } from \"@patternfly/react-table\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { KeycloakSpinner } from \"../../components/keycloak-spinner/KeycloakSpinner\";\nimport { ListEmptyState } from \"../../components/list-empty-state/ListEmptyState\";\nimport { KeycloakDataTable } from \"../../components/table-toolbar/KeycloakDataTable\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { emptyFormatter } from \"../../util\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport useFormatDate from \"../../utils/useFormatDate\";\nimport useToggle from \"../../utils/useToggle\";\nimport { toKeysTab } from \"../routes/KeysTab\";\n\nimport \"../realm-settings-section.css\";\n\nconst FILTER_OPTIONS = [\"ACTIVE\", \"PASSIVE\", \"DISABLED\"] as const;\ntype FilterType = (typeof FILTER_OPTIONS)[number];\n\ntype KeyData = KeyMetadataRepresentation & {\n provider?: string;\n};\n\ntype KeysListTabProps = {\n realmComponents: ComponentRepresentation[];\n};\n\ntype SelectFilterProps = {\n onFilter: (filter: FilterType) => void;\n};\n\nconst SelectFilter = ({ onFilter }: SelectFilterProps) => {\n const { t } = useTranslation();\n const [filterType, setFilterType] = useState(FILTER_OPTIONS[0]);\n\n const [filterDropdownOpen, toggleFilter] = useToggle();\n return (\n }\n onSelect={(value) => {\n const filter =\n FILTER_OPTIONS.find((o) => o === value.toString()) ||\n FILTER_OPTIONS[0];\n setFilterType(filter);\n onFilter(filter);\n toggleFilter();\n }}\n selections={filterType}\n aria-label={t(\"selectFilterType\")}\n >\n {FILTER_OPTIONS.map((option) => (\n \n {t(`keysFilter.${option}`)}\n \n ))}\n \n );\n};\n\nexport const KeysListTab = ({ realmComponents }: KeysListTabProps) => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const navigate = useNavigate();\n const formatDate = useFormatDate();\n\n const [publicKey, setPublicKey] = useState(\"\");\n const [certificate, setCertificate] = useState(\"\");\n\n const { realm } = useRealm();\n\n const [keyData, setKeyData] = useState();\n const [filteredKeyData, setFilteredKeyData] = useState();\n\n useFetch(\n async () => {\n const keysMetaData = await adminClient.realms.getKeys({ realm });\n return keysMetaData.keys?.map((key) => {\n const provider = realmComponents.find(\n (component: ComponentRepresentation) =>\n component.id === key.providerId,\n );\n return { ...key, provider: provider?.name } as KeyData;\n })!;\n },\n setKeyData,\n [],\n );\n\n const [togglePublicKeyDialog, PublicKeyDialog] = useConfirmDialog({\n titleKey: t(\"publicKey\"),\n messageKey: publicKey,\n continueButtonLabel: \"close\",\n continueButtonVariant: ButtonVariant.primary,\n onConfirm: () => Promise.resolve(),\n });\n\n const [toggleCertificateDialog, CertificateDialog] = useConfirmDialog({\n titleKey: t(\"certificate\"),\n messageKey: certificate,\n continueButtonLabel: \"close\",\n continueButtonVariant: ButtonVariant.primary,\n onConfirm: () => Promise.resolve(),\n });\n\n if (!keyData) {\n return ;\n }\n\n return (\n \n \n \n \n setFilteredKeyData(\n filterType !== FILTER_OPTIONS[0]\n ? keyData!.filter(({ status }) => status === filterType)\n : undefined,\n )\n }\n />\n }\n columns={[\n {\n name: \"algorithm\",\n displayKey: \"algorithm\",\n cellFormatters: [emptyFormatter()],\n transforms: [cellWidth(15)],\n },\n {\n name: \"type\",\n displayKey: \"type\",\n cellFormatters: [emptyFormatter()],\n transforms: [cellWidth(10)],\n },\n {\n name: \"kid\",\n displayKey: \"kid\",\n cellFormatters: [emptyFormatter()],\n transforms: [cellWidth(10)],\n },\n {\n name: \"use\",\n displayKey: \"use\",\n cellFormatters: [emptyFormatter()],\n transforms: [cellWidth(10)],\n },\n {\n name: \"provider\",\n displayKey: \"provider\",\n cellRenderer: ({ provider }: KeyData) => provider || \"-\",\n transforms: [cellWidth(10)],\n },\n {\n name: \"validTo\",\n displayKey: \"validTo\",\n cellRenderer: ({ validTo }: KeyData) =>\n validTo ? formatDate(new Date(validTo)) : \"-\",\n transforms: [cellWidth(10)],\n },\n {\n name: \"publicKeys\",\n displayKey: \"publicKeys\",\n cellRenderer: ({ type, publicKey, certificate }: KeyData) => {\n if (type === \"EC\") {\n return (\n {\n togglePublicKeyDialog();\n setPublicKey(publicKey!);\n }}\n variant=\"secondary\"\n id=\"kc-public-key\"\n >\n {t(\"publicKey\")}\n \n );\n } else if (type === \"RSA\") {\n return (\n
\n {\n togglePublicKeyDialog();\n setPublicKey(publicKey!);\n }}\n variant=\"secondary\"\n id={publicKey}\n >\n {t(\"publicKey\")}\n \n {\n toggleCertificateDialog();\n setCertificate(certificate!);\n }}\n variant=\"secondary\"\n id={certificate}\n className=\"kc-certificate\"\n >\n {t(\"certificate\")}\n \n
\n );\n } else if (type === \"OKP\") {\n return (\n {\n togglePublicKeyDialog();\n setPublicKey(publicKey!);\n }}\n variant=\"secondary\"\n id=\"kc-public-key\"\n >\n {t(\"publicKey\")}\n \n );\n } else return \"\";\n },\n transforms: [cellWidth(20)],\n },\n ]}\n isSearching={!!filteredKeyData}\n emptyState={\n \n navigate(toKeysTab({ realm, tab: \"providers\" }))\n }\n />\n }\n />\n
\n );\n};\n","import { Modal, ModalVariant } from \"@patternfly/react-core\";\nimport { useTranslation } from \"react-i18next\";\nimport { KeyProviderForm } from \"./KeyProviderForm\";\nimport type { ProviderType } from \"../../routes/KeyProvider\";\n\nimport style from \"./key-provider-modal.module.css\";\n\ntype KeyProviderModalProps = {\n providerType: ProviderType;\n onClose: () => void;\n};\n\nexport const KeyProviderModal = ({\n providerType,\n onClose,\n}: KeyProviderModalProps) => {\n const { t } = useTranslation();\n return (\n \n \n \n );\n};\n","import {\n DataList,\n DataListCell,\n DataListItem,\n DataListItemCells,\n DataListItemRow,\n Modal,\n} from \"@patternfly/react-core\";\nimport { useTranslation } from \"react-i18next\";\nimport { useServerInfo } from \"../../../context/server-info/ServerInfoProvider\";\nimport { KEY_PROVIDER_TYPE } from \"../../../util\";\n\ntype KeyProvidersPickerProps = {\n onConfirm: (provider: string) => void;\n onClose: () => void;\n};\n\nexport const KeyProvidersPicker = ({\n onConfirm,\n onClose,\n}: KeyProvidersPickerProps) => {\n const { t } = useTranslation();\n const serverInfo = useServerInfo();\n const keyProviderComponentTypes =\n serverInfo.componentTypes?.[KEY_PROVIDER_TYPE] ?? [];\n return (\n \n {\n onConfirm(id);\n }}\n aria-label={t(\"addPredefinedMappers\")}\n isCompact\n >\n {keyProviderComponentTypes.map((provider) => (\n \n \n \n {provider.id}\n ,\n \n {provider.helpText}\n ,\n ]}\n />\n \n \n ))}\n \n \n );\n};\n","import type ComponentRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/componentRepresentation\";\nimport type ComponentTypeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/componentTypeRepresentation\";\nimport type { KeyMetadataRepresentation } from \"@keycloak/keycloak-admin-client/lib/defs/keyMetadataRepresentation\";\nimport {\n AlertVariant,\n Button,\n ButtonVariant,\n InputGroup,\n InputGroupItem,\n PageSection,\n TextInput,\n Toolbar,\n ToolbarGroup,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { SearchIcon } from \"@patternfly/react-icons\";\nimport { KeyboardEvent, useMemo, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { DraggableTable } from \"../../authentication/components/DraggableTable\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\nimport { KEY_PROVIDER_TYPE } from \"../../util\";\nimport useToggle from \"../../utils/useToggle\";\nimport { ProviderType, toKeyProvider } from \"../routes/KeyProvider\";\nimport { KeyProviderModal } from \"./key-providers/KeyProviderModal\";\nimport { KeyProvidersPicker } from \"./key-providers/KeyProvidersPicker\";\n\nimport \"../realm-settings-section.css\";\n\ntype ComponentData = KeyMetadataRepresentation & {\n id?: string;\n providerDescription?: string;\n name?: string;\n toggleHidden?: boolean;\n config?: any;\n parentId?: string;\n};\n\ntype KeysProvidersTabProps = {\n realmComponents: ComponentRepresentation[];\n refresh: () => void;\n};\n\nexport const KeysProvidersTab = ({\n realmComponents,\n refresh,\n}: KeysProvidersTabProps) => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const { addAlert, addError } = useAlerts();\n const { realm } = useRealm();\n\n const [searchVal, setSearchVal] = useState(\"\");\n const [filteredComponents, setFilteredComponents] = useState(\n [],\n );\n\n const [isCreateModalOpen, handleModalToggle] = useToggle();\n const serverInfo = useServerInfo();\n const keyProviderComponentTypes =\n serverInfo.componentTypes?.[KEY_PROVIDER_TYPE] ?? [];\n\n const [providerOpen, toggleProviderOpen] = useToggle();\n const [defaultUIDisplayName, setDefaultUIDisplayName] =\n useState();\n\n const [selectedComponent, setSelectedComponent] =\n useState();\n\n const components = useMemo(\n () =>\n realmComponents.map((component) => {\n const provider = keyProviderComponentTypes.find(\n (componentType: ComponentTypeRepresentation) =>\n component.providerId === componentType.id,\n );\n\n return {\n ...component,\n providerDescription: provider?.helpText,\n };\n }),\n [realmComponents],\n );\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"deleteProviderTitle\",\n messageKey: t(\"deleteProviderConfirm\", {\n provider: selectedComponent?.name,\n }),\n continueButtonLabel: \"delete\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n await adminClient.components.del({\n id: selectedComponent!.id!,\n realm: realm,\n });\n\n refresh();\n\n addAlert(t(\"deleteProviderSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"deleteProviderError\", error);\n }\n },\n });\n\n const onSearch = () => {\n if (searchVal !== \"\") {\n setSearchVal(searchVal);\n const filteredComponents = components.filter(\n (component) =>\n component.name?.includes(searchVal) ||\n component.providerId?.includes(searchVal),\n );\n setFilteredComponents(filteredComponents);\n } else {\n setSearchVal(\"\");\n setFilteredComponents(components);\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Enter\") {\n onSearch();\n }\n };\n\n const handleInputChange = (value: string) => {\n setSearchVal(value);\n };\n\n return (\n <>\n {providerOpen && (\n toggleProviderOpen()}\n onConfirm={(provider) => {\n handleModalToggle();\n setDefaultUIDisplayName(provider as ProviderType);\n toggleProviderOpen();\n }}\n />\n )}\n {isCreateModalOpen && defaultUIDisplayName && (\n {\n handleModalToggle();\n refresh();\n }}\n />\n )}\n \n \n \n \n \n \n \n \n handleInputChange(value)\n }\n onKeyDown={handleKeyDown}\n />\n \n \n \n \n \n \n \n \n \n toggleProviderOpen()}\n >\n {t(\"addProvider\")}\n \n \n \n \n {\n const updateAll = components.map((component: ComponentData) => {\n const componentToSave = { ...component };\n delete componentToSave.providerDescription;\n\n return adminClient.components.update(\n { id: component.id! },\n {\n ...componentToSave,\n config: {\n priority: [\n (\n itemOrder.length -\n itemOrder.indexOf(component.id!) +\n 100\n ).toString(),\n ],\n },\n },\n );\n });\n\n try {\n await Promise.all(updateAll);\n refresh();\n addAlert(t(\"saveProviderListSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"saveProviderError\", error);\n }\n }}\n columns={[\n {\n name: \"name\",\n displayKey: \"name\",\n cellRenderer: (component) => (\n \n {component.name}\n \n ),\n },\n {\n name: \"providerId\",\n displayKey: \"provider\",\n },\n {\n name: \"providerDescription\",\n displayKey: \"providerDescription\",\n },\n ]}\n actions={[\n {\n title: t(\"delete\"),\n onClick: (_key, _idx, component) => {\n setSelectedComponent(component as ComponentRepresentation);\n toggleDeleteDialog();\n },\n },\n ]}\n />\n \n \n );\n};\n","import type ComponentRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/componentRepresentation\";\nimport { Tab, TabTitleText } from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useAdminClient } from \"../../admin-client\";\nimport { KeycloakSpinner } from \"../../components/keycloak-spinner/KeycloakSpinner\";\nimport {\n RoutableTabs,\n useRoutableTab,\n} from \"../../components/routable-tabs/RoutableTabs\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { KEY_PROVIDER_TYPE } from \"../../util\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport { KeySubTab, toKeysTab } from \"../routes/KeysTab\";\nimport { KeysListTab } from \"./KeysListTab\";\nimport { KeysProvidersTab } from \"./KeysProvidersTab\";\n\nconst sortByPriority = (components: ComponentRepresentation[]) => {\n const sortedComponents = [...components].sort((a, b) => {\n const priorityA = Number(a.config?.priority);\n const priorityB = Number(b.config?.priority);\n\n return (\n (!isNaN(priorityB) ? priorityB : 0) - (!isNaN(priorityA) ? priorityA : 0)\n );\n });\n\n return sortedComponents;\n};\n\nexport const KeysTab = () => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n\n const { realm: realmName } = useRealm();\n\n const [realmComponents, setRealmComponents] =\n useState();\n const [key, setKey] = useState(0);\n const refresh = () => {\n setKey(key + 1);\n };\n\n useFetch(\n () =>\n adminClient.components.find({\n type: KEY_PROVIDER_TYPE,\n realm: realmName,\n }),\n (components) => setRealmComponents(sortByPriority(components)),\n [key],\n );\n\n const useTab = (tab: KeySubTab) =>\n useRoutableTab(toKeysTab({ realm: realmName, tab }));\n\n const listTab = useTab(\"list\");\n const providersTab = useTab(\"providers\");\n\n if (!realmComponents) {\n return ;\n }\n\n return (\n \n {t(\"keysList\")}}\n {...listTab}\n >\n \n \n {t(\"providers\")}}\n {...providersTab}\n >\n \n \n \n );\n};\n","import { KeycloakSelect, SelectVariant } from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n Button,\n Chip,\n ChipGroup,\n Divider,\n Flex,\n FlexItem,\n Form,\n FormGroup,\n SelectOption,\n Text,\n TextContent,\n TextInput,\n TextVariants,\n} from \"@patternfly/react-core\";\nimport { pickBy } from \"lodash-es\";\nimport { useMemo, useState } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../../admin-client\";\nimport DropdownPanel from \"../../components/dropdown-panel/DropdownPanel\";\nimport { ListEmptyState } from \"../../components/list-empty-state/ListEmptyState\";\nimport { KeycloakDataTable } from \"../../components/table-toolbar/KeycloakDataTable\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\nimport { useWhoAmI } from \"../../context/whoami/WhoAmI\";\nimport { DEFAULT_LOCALE } from \"../../i18n/i18n\";\nimport { localeToDisplayName } from \"../../util\";\nimport useLocaleSort, { mapByKey } from \"../../utils/useLocaleSort\";\n\ntype EffectiveMessageBundlesProps = {\n defaultSupportedLocales: string[];\n defaultLocales: string[];\n};\n\ntype EffectiveMessageBundlesSearchForm = {\n theme: string;\n themeType: string;\n locale: string;\n hasWords: string[];\n};\n\nconst defaultValues: EffectiveMessageBundlesSearchForm = {\n theme: \"\",\n themeType: \"\",\n locale: \"\",\n hasWords: [],\n};\n\nexport const EffectiveMessageBundles = ({\n defaultSupportedLocales,\n defaultLocales,\n}: EffectiveMessageBundlesProps) => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const { realm } = useRealm();\n const serverInfo = useServerInfo();\n const { whoAmI } = useWhoAmI();\n const localeSort = useLocaleSort();\n const [searchDropdownOpen, setSearchDropdownOpen] = useState(false);\n const [searchPerformed, setSearchPerformed] = useState(false);\n const [selectThemesOpen, setSelectThemesOpen] = useState(false);\n const [selectThemeTypeOpen, setSelectThemeTypeOpen] = useState(false);\n const [selectLanguageOpen, setSelectLanguageOpen] = useState(false);\n const [activeFilters, setActiveFilters] = useState<\n Partial\n >({});\n const [key, setKey] = useState(0);\n const themes = serverInfo.themes;\n\n const themeTypes = useMemo(() => {\n if (!themes) {\n return [];\n }\n\n return localeSort(Object.keys(themes), (key) => key);\n }, [themes]);\n\n const themeNames = useMemo(() => {\n if (!themes) {\n return [];\n }\n\n return localeSort(\n Object.values(themes as Record)\n .flatMap((theme) => theme.map((item) => item.name))\n .filter((value, index, self) => self.indexOf(value) === index),\n (name) => name,\n );\n }, [themes]);\n\n const combinedLocales = useMemo(() => {\n return Array.from(new Set([...defaultLocales, ...defaultSupportedLocales]));\n }, [defaultLocales, defaultSupportedLocales]);\n\n const filterLabels: Record =\n {\n theme: t(\"theme\"),\n themeType: t(\"themeType\"),\n locale: t(\"language\"),\n hasWords: t(\"hasWords\"),\n };\n\n const {\n getValues,\n reset,\n formState: { isDirty, isValid },\n control,\n } = useForm({\n mode: \"onChange\",\n defaultValues,\n });\n\n const loader = async () => {\n try {\n const filter = getValues();\n\n const requiredKeys = [\"theme\", \"themeType\", \"locale\"];\n const shouldReturnEmpty = requiredKeys.some(\n (key) => !filter[key as keyof EffectiveMessageBundlesSearchForm],\n );\n\n if (shouldReturnEmpty) {\n return [];\n }\n\n const messages = await adminClient.serverInfo.findEffectiveMessageBundles(\n {\n realm,\n ...filter,\n locale: filter.locale || DEFAULT_LOCALE,\n source: true,\n },\n );\n\n const filteredMessages =\n filter.hasWords.length > 0\n ? messages.filter((m) =>\n filter.hasWords.some(\n (f) => m.value.includes(f) || m.key.includes(f),\n ),\n )\n : messages;\n\n const sortedMessages = localeSort([...filteredMessages], mapByKey(\"key\"));\n\n return sortedMessages;\n } catch (error) {\n return [];\n }\n };\n\n function submitSearch() {\n setSearchDropdownOpen(false);\n commitFilters();\n }\n\n function resetSearch() {\n reset();\n commitFilters();\n }\n\n function removeFilter(key: keyof EffectiveMessageBundlesSearchForm) {\n const formValues: EffectiveMessageBundlesSearchForm = { ...getValues() };\n delete formValues[key];\n\n reset({ ...defaultValues, ...formValues });\n commitFilters();\n }\n\n function removeFilterValue(\n key: keyof EffectiveMessageBundlesSearchForm,\n valueToRemove: string,\n ) {\n const formValues = getValues();\n const fieldValue = formValues[key];\n const newFieldValue = Array.isArray(fieldValue)\n ? fieldValue.filter((val) => val !== valueToRemove)\n : fieldValue;\n\n reset({ ...formValues, [key]: newFieldValue });\n commitFilters();\n }\n\n function commitFilters() {\n const newFilters: Partial = pickBy(\n getValues(),\n (value) => value !== \"\" || (Array.isArray(value) && value.length > 0),\n );\n\n setActiveFilters(newFilters);\n setKey(key + 1);\n }\n\n const effectiveMessageBunldesSearchFormDisplay = () => {\n return (\n \n \n \n \n {t(\"effectiveMessageBundlesDescription\")}\n \n \n \n \n \n e.preventDefault()}\n >\n \n (value || \"\").length > 0,\n }}\n render={({ field }) => (\n setSelectThemesOpen(val)}\n selections={field.value}\n onSelect={(selectedValue) => {\n field.onChange(selectedValue.toString());\n setSelectThemesOpen(false);\n }}\n onClear={() => {\n field.onChange(\"\");\n }}\n isOpen={selectThemesOpen}\n aria-label={t(\"selectTheme\")}\n chipGroupComponent={\n \n {\n theme.stopPropagation();\n field.onChange(\"\");\n }}\n >\n {field.value}\n \n \n }\n >\n {[\n \n {t(\"selectTheme\")}\n ,\n ].concat(\n themeNames.map((option) => (\n \n {option}\n \n )),\n )}\n \n )}\n />\n \n \n (value || \"\").length > 0,\n }}\n render={({ field }) => (\n setSelectThemeTypeOpen(val)}\n selections={field.value}\n onSelect={(selectedValue) => {\n field.onChange(selectedValue.toString());\n setSelectThemeTypeOpen(false);\n }}\n onClear={() => {\n field.onChange(\"\");\n }}\n isOpen={selectThemeTypeOpen}\n aria-label={t(\"selectThemeType\")}\n chipGroupComponent={\n \n {\n themeType.stopPropagation();\n field.onChange(\"\");\n }}\n >\n {field.value}\n \n \n }\n >\n {[\n \n {t(\"selectThemeType\")}\n ,\n ].concat(\n themeTypes.map((option) => (\n \n {option}\n \n )),\n )}\n \n )}\n />\n \n \n (value || \"\").length > 0,\n }}\n render={({ field }) => (\n setSelectLanguageOpen(val)}\n selections={field.value}\n onSelect={(selectedValue) => {\n field.onChange(selectedValue.toString());\n setSelectLanguageOpen(false);\n }}\n onClear={() => {\n field.onChange(\"\");\n }}\n isOpen={selectLanguageOpen}\n aria-labelledby=\"language\"\n chipGroupComponent={\n \n {field.value ? (\n {\n language.stopPropagation();\n field.onChange(\"\");\n }}\n >\n {localeToDisplayName(\n field.value,\n whoAmI.getLocale(),\n )}\n \n ) : null}\n \n }\n >\n {[\n \n {t(\"selectLanguage\")}\n ,\n ].concat(\n combinedLocales.map((option) => (\n \n {localeToDisplayName(option, whoAmI.getLocale())}\n \n )),\n )}\n \n )}\n />\n \n \n (\n
\n {\n const target = e.target as HTMLInputElement;\n const input = target.value;\n\n if (input.trim().length === 0) {\n field.onChange([]);\n } else {\n const words = input\n .split(\" \")\n .map((word) => word.trim());\n field.onChange(words);\n }\n }}\n />\n \n {field.value.map((word, index) => (\n {\n e.stopPropagation();\n const newWords = field.value.filter(\n (_, i) => i !== index,\n );\n field.onChange(newWords);\n }}\n >\n {word}\n \n ))}\n \n
\n )}\n />\n
\n \n {\n setSearchPerformed(true);\n submitSearch();\n }}\n data-testid=\"search-effective-message-bundles-btn\"\n isDisabled={!isValid}\n >\n {t(\"search\")}\n \n \n {t(\"reset\")}\n \n \n \n \n
\n \n {Object.entries(activeFilters).length > 0 && (\n <>\n {Object.entries(activeFilters).map((filter) => {\n const [key, value] = filter as [\n keyof EffectiveMessageBundlesSearchForm,\n string | string[],\n ];\n return (\n removeFilter(key)}\n >\n {typeof value === \"string\" ? (\n \n {key === \"locale\"\n ? localeToDisplayName(\n value,\n whoAmI.getLocale(),\n )?.toLowerCase()\n : value}\n \n ) : (\n value.map((entry) => (\n removeFilterValue(key, entry)}\n >\n {entry}\n \n ))\n )}\n \n );\n })}\n \n )}\n \n \n );\n };\n\n if (!searchPerformed) {\n return (\n <>\n
\n {effectiveMessageBunldesSearchFormDisplay()}\n
\n \n \n \n );\n }\n\n return (\n \n }\n isSearching={Object.keys(activeFilters).length > 0}\n />\n );\n};\n","import {\n Button,\n ButtonVariant,\n Form,\n Modal,\n ModalVariant,\n} from \"@patternfly/react-core\";\nimport { FormProvider, SubmitHandler, UseFormReturn } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { TextControl } from \"@keycloak/keycloak-ui-shared\";\nimport type { KeyValueType } from \"../components/key-value-form/key-value-convert\";\n\ntype AddTranslationModalProps = {\n id?: string;\n form: UseFormReturn;\n save: SubmitHandler;\n handleModalToggle: () => void;\n};\n\nexport type TranslationForm = {\n key: string;\n value: string;\n translation: KeyValueType;\n};\n\nexport const AddTranslationModal = ({\n handleModalToggle,\n save,\n form,\n}: AddTranslationModalProps) => {\n const { t } = useTranslation();\n\n return (\n \n {t(\"create\")}\n ,\n {\n handleModalToggle();\n }}\n >\n {t(\"cancel\")}\n ,\n ]}\n >\n \n \n \n \n \n \n \n );\n};\n","import type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport { KeycloakSelect, SelectVariant } from \"@keycloak/keycloak-ui-shared\";\nimport {\n AlertVariant,\n Button,\n ButtonVariant,\n Divider,\n Dropdown,\n DropdownItem,\n DropdownList,\n Form,\n FormGroup,\n MenuToggle,\n SelectGroup,\n SelectOption,\n Text,\n TextContent,\n TextInput,\n TextVariants,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport {\n CheckIcon,\n EllipsisVIcon,\n PencilAltIcon,\n SearchIcon,\n TimesIcon,\n} from \"@patternfly/react-icons\";\nimport {\n ActionsColumn,\n IRow,\n IRowCell,\n Table,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n} from \"@patternfly/react-table\";\nimport { cloneDeep, isEqual, uniqWith } from \"lodash-es\";\nimport { ChangeEvent, useEffect, useState, type FormEvent } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { KeyValueType } from \"../../components/key-value-form/key-value-convert\";\nimport { ListEmptyState } from \"../../components/list-empty-state/ListEmptyState\";\nimport { PaginatingTableToolbar } from \"../../components/table-toolbar/PaginatingTableToolbar\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { useWhoAmI } from \"../../context/whoami/WhoAmI\";\nimport { DEFAULT_LOCALE, i18n } from \"../../i18n/i18n\";\nimport { localeToDisplayName } from \"../../util\";\nimport { AddTranslationModal } from \"../AddTranslationModal\";\n\ntype RealmOverridesProps = {\n internationalizationEnabled: boolean;\n watchSupportedLocales: string[];\n realm: RealmRepresentation;\n tableData: Record[] | undefined;\n};\n\ntype EditStatesType = { [key: number]: boolean };\n\nexport type TranslationForm = {\n key: string;\n value: string;\n translation: KeyValueType;\n};\n\nexport enum RowEditAction {\n Save = \"save\",\n Cancel = \"cancel\",\n Edit = \"edit\",\n Delete = \"delete\",\n}\n\nexport const RealmOverrides = ({\n internationalizationEnabled,\n watchSupportedLocales,\n realm,\n tableData,\n}: RealmOverridesProps) => {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const [addTranslationModalOpen, setAddTranslationModalOpen] = useState(false);\n const [filterDropdownOpen, setFilterDropdownOpen] = useState(false);\n const [translations, setTranslations] = useState<[string, string][]>([]);\n const [selectMenuLocale, setSelectMenuLocale] = useState(DEFAULT_LOCALE);\n const [kebabOpen, setKebabOpen] = useState(false);\n const { getValues, handleSubmit } = useForm();\n const [selectMenuValueSelected, setSelectMenuValueSelected] = useState(false);\n const [tableRows, setTableRows] = useState([]);\n const [tableKey, setTableKey] = useState(0);\n const [max, setMax] = useState(10);\n const [first, setFirst] = useState(0);\n const [filter, setFilter] = useState(\"\");\n const translationForm = useForm({ mode: \"onChange\" });\n const { addAlert, addError } = useAlerts();\n const { realm: currentRealm } = useRealm();\n const { whoAmI } = useWhoAmI();\n const [selectedRowKeys, setSelectedRowKeys] = useState([]);\n const [areAllRowsSelected, setAreAllRowsSelected] = useState(false);\n const [editStates, setEditStates] = useState({});\n const [formValue, setFormValue] = useState(\"\");\n const refreshTable = () => {\n setTableKey(tableKey + 1);\n };\n\n useEffect(() => {\n const fetchLocalizationTexts = async () => {\n try {\n let result = await adminClient.realms.getRealmLocalizationTexts({\n first,\n max,\n realm: realm.realm!,\n selectedLocale:\n selectMenuLocale ||\n getValues(\"defaultLocale\") ||\n whoAmI.getLocale(),\n });\n\n if (filter) {\n const searchInTranslations = (idx: number) => {\n return Object.entries(result).filter((i) =>\n i[idx].includes(filter),\n );\n };\n\n const filtered = uniqWith(\n searchInTranslations(0).concat(searchInTranslations(1)),\n isEqual,\n );\n\n result = Object.fromEntries(filtered);\n }\n\n return Object.entries(result).slice(first, first + max);\n } catch (error) {\n return [];\n }\n };\n\n fetchLocalizationTexts().then((translations) => {\n setTranslations(translations);\n\n const updatedRows: IRow[] = translations.map(\n (translation): IRow => ({\n rowEditBtnAriaLabel: () =>\n t(\"rowEditBtnAriaLabel\", {\n translation: translation[1],\n }),\n rowSaveBtnAriaLabel: () =>\n t(\"rowSaveBtnAriaLabel\", {\n translation: translation[1],\n }),\n rowCancelBtnAriaLabel: () =>\n t(\"rowCancelBtnAriaLabel\", {\n translation: translation[1],\n }),\n cells: [\n {\n title: translation[0],\n props: {\n value: translation[0],\n },\n },\n {\n title: translation[1],\n props: {\n value: translation[1],\n },\n },\n ],\n }),\n );\n\n setTableRows(updatedRows);\n });\n }, [tableKey, tableData, first, max, filter]);\n\n const handleModalToggle = () => {\n setAddTranslationModalOpen(!addTranslationModalOpen);\n };\n\n const options = [\n \n \n {localeToDisplayName(DEFAULT_LOCALE, whoAmI.getDisplayName())}\n \n ,\n ,\n \n {watchSupportedLocales.map((locale) => (\n \n {localeToDisplayName(locale, whoAmI.getLocale())}\n \n ))}\n ,\n ];\n\n const addKeyValue = async (pair: KeyValueType): Promise => {\n try {\n await adminClient.realms.addLocalization(\n {\n realm: currentRealm!,\n selectedLocale:\n selectMenuLocale || getValues(\"defaultLocale\") || DEFAULT_LOCALE,\n key: pair.key,\n },\n pair.value,\n );\n\n adminClient.setConfig({\n realmName: currentRealm!,\n });\n refreshTable();\n translationForm.setValue(\"key\", \"\");\n translationForm.setValue(\"value\", \"\");\n i18n.reloadResources();\n\n addAlert(t(\"addTranslationSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(t(\"addTranslationError\"), error);\n }\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"deleteConfirmTranslationTitle\",\n messageKey: t(\"translationDeleteConfirmDialog\", {\n count: selectedRowKeys.length,\n }),\n continueButtonLabel: \"delete\",\n continueButtonVariant: ButtonVariant.danger,\n onCancel: () => {\n setSelectedRowKeys([]);\n setAreAllRowsSelected(false);\n },\n onConfirm: async () => {\n try {\n for (const key of selectedRowKeys) {\n delete (\n i18n.store.data[whoAmI.getLocale()][currentRealm] as Record<\n string,\n string\n >\n )[key],\n await adminClient.realms.deleteRealmLocalizationTexts({\n realm: currentRealm!,\n selectedLocale: selectMenuLocale,\n key: key,\n });\n }\n setAreAllRowsSelected(false);\n setSelectedRowKeys([]);\n refreshTable();\n\n addAlert(t(\"deleteAllTranslationsSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"deleteAllTranslationsError\", error);\n }\n },\n });\n\n const handleRowSelect = (\n event: ChangeEvent,\n rowIndex: number,\n ) => {\n const selectedKey = (tableRows[rowIndex].cells?.[0] as IRowCell).props\n .value;\n if (event.target.checked) {\n setSelectedRowKeys((prevSelected) => [...prevSelected, selectedKey]);\n } else {\n setSelectedRowKeys((prevSelected) =>\n prevSelected.filter((key) => key !== selectedKey),\n );\n }\n\n setAreAllRowsSelected(\n tableRows.length ===\n selectedRowKeys.length + (event.target.checked ? 1 : -1),\n );\n };\n\n const toggleSelectAllRows = () => {\n if (areAllRowsSelected) {\n setSelectedRowKeys([]);\n } else {\n setSelectedRowKeys(\n tableRows.map((row) => (row.cells?.[0] as IRowCell).props.value),\n );\n }\n setAreAllRowsSelected(!areAllRowsSelected);\n };\n\n const isRowSelected = (key: any) => {\n return selectedRowKeys.includes(key);\n };\n\n const onSubmit = async (inputValue: string, rowIndex: number) => {\n const newRows = cloneDeep(tableRows);\n\n const newRow = cloneDeep(newRows[rowIndex]);\n (newRow.cells?.[1] as IRowCell).props.value = inputValue;\n newRows[rowIndex] = newRow;\n\n try {\n const key = (newRow.cells?.[0] as IRowCell).props.value;\n const value = (newRow.cells?.[1] as IRowCell).props.value;\n\n await adminClient.realms.addLocalization(\n {\n realm: realm.realm!,\n selectedLocale:\n selectMenuLocale || getValues(\"defaultLocale\") || DEFAULT_LOCALE,\n key,\n },\n value,\n );\n i18n.reloadResources();\n\n addAlert(t(\"updateTranslationSuccess\"), AlertVariant.success);\n setTableRows(newRows);\n } catch (error) {\n addAlert(t(\"updateTranslationError\"), AlertVariant.danger);\n }\n\n setEditStates((prevEditStates) => ({\n ...prevEditStates,\n [rowIndex]: false,\n }));\n };\n\n return (\n <>\n \n {addTranslationModalOpen && (\n {\n addKeyValue(pair);\n handleModalToggle();\n }}\n form={translationForm}\n />\n )}\n \n \n {t(\"realmOverridesDescription\")}\n \n \n {\n setFirst(first);\n setMax(max);\n }}\n inputGroupName={\"search\"}\n inputGroupOnEnter={(search) => {\n setFilter(search);\n setFirst(0);\n setMax(10);\n }}\n inputGroupPlaceholder={t(\"searchForTranslation\")}\n toolbarItem={\n <>\n {\n setAddTranslationModalOpen(true);\n setAreAllRowsSelected(false);\n setSelectedRowKeys([]);\n }}\n >\n {t(\"addTranslation\")}\n \n \n setKebabOpen(isOpen)}\n toggle={(ref) => (\n setKebabOpen(!kebabOpen)}\n variant=\"plain\"\n isExpanded={kebabOpen}\n data-testid=\"toolbar-deleteBtn\"\n aria-label=\"kebab\"\n >\n \n \n )}\n isOpen={kebabOpen}\n isPlain\n >\n \n {\n toggleDeleteDialog();\n setKebabOpen(false);\n }}\n >\n {t(\"delete\")}\n \n \n \n \n \n }\n searchTypeComponent={\n \n setFilterDropdownOpen(isExpanded)}\n onSelect={(value) => {\n setSelectMenuLocale(value.toString());\n setSelectMenuValueSelected(true);\n refreshTable();\n setFilterDropdownOpen(false);\n }}\n selections={\n selectMenuValueSelected\n ? localeToDisplayName(selectMenuLocale, whoAmI.getLocale())\n : realm.defaultLocale !== \"\"\n ? localeToDisplayName(DEFAULT_LOCALE, whoAmI.getLocale())\n : t(\"placeholderText\")\n }\n >\n {options}\n \n \n }\n >\n {translations.length === 0 && !filter && (\n \n )}\n {translations.length === 0 && filter && (\n \n )}\n {translations.length !== 0 && (\n \n \n \n \n \n \n {t(\"key\")}\n {t(\"value\")}\n \n \n \n \n {tableRows.map((row, rowIndex) => (\n \n \n handleRowSelect(\n event as ChangeEvent,\n rowIndex,\n ),\n isSelected: isRowSelected(\n (row.cells?.[0] as IRowCell).props.value,\n ),\n }}\n />\n \n {(row.cells?.[0] as IRowCell).props.value}\n \n \n {\n onSubmit(formValue, rowIndex);\n })}\n >\n \n {editStates[rowIndex] ? (\n <>\n ,\n value: string,\n ) => {\n setFormValue(value);\n }}\n key={`edit-input-${rowIndex}`}\n />\n }\n />\n }\n aria-label={t(\"cancelBtn\")}\n onClick={() => {\n setEditStates((prevEditStates) => ({\n ...prevEditStates,\n [rowIndex]: false,\n }));\n }}\n />\n \n ) : (\n <>\n \n {(row.cells?.[1] as IRowCell).props.value}\n \n {\n const currentValue = (\n tableRows[rowIndex].cells?.[1] as IRowCell\n ).props.value;\n setFormValue(currentValue);\n setEditStates((prevState) => ({\n ...prevState,\n [rowIndex]: true,\n }));\n }}\n key={`edit-button-${rowIndex}`}\n aria-label={t(\"editBtn\")}\n variant=\"link\"\n className=\"pf-m-plain\"\n data-testid={`editTranslationBtn-${rowIndex}`}\n >\n \n \n \n )}\n \n \n \n \n {\n setSelectedRowKeys([\n (row.cells?.[0] as IRowCell).props.value,\n ]);\n translations.length === 1 &&\n setAreAllRowsSelected(true);\n toggleDeleteDialog();\n setKebabOpen(false);\n },\n },\n ]}\n />\n \n \n ))}\n \n \n )}\n \n \n );\n};\n","import type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport { SelectControl, SwitchControl } from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n Button,\n Tab,\n TabTitleText,\n Tabs,\n} from \"@patternfly/react-core\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { FormProvider, useForm, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\nimport { useWhoAmI } from \"../../context/whoami/WhoAmI\";\nimport { DEFAULT_LOCALE } from \"../../i18n/i18n\";\nimport { convertToFormValues, localeToDisplayName } from \"../../util\";\nimport { EffectiveMessageBundles } from \"./EffectiveMessageBundles\";\nimport { RealmOverrides } from \"./RealmOverrides\";\n\ntype LocalizationTabProps = {\n save: (realm: RealmRepresentation) => void;\n realm: RealmRepresentation;\n tableData: Record[] | undefined;\n};\n\nexport const LocalizationTab = ({\n save,\n realm,\n tableData,\n}: LocalizationTabProps) => {\n const { t } = useTranslation();\n const { whoAmI } = useWhoAmI();\n\n const [activeTab, setActiveTab] = useState(0);\n const form = useForm();\n const { setValue, control, handleSubmit, formState } = form;\n\n const defaultSupportedLocales = realm.supportedLocales?.length\n ? realm.supportedLocales\n : [DEFAULT_LOCALE];\n\n const themeTypes = useServerInfo().themes!;\n const allLocales = useMemo(() => {\n const locales = Object.values(themeTypes).flatMap((theme) =>\n theme.flatMap(({ locales }) => (locales ? locales : [])),\n );\n return Array.from(new Set(locales));\n }, [themeTypes]);\n\n const setupForm = () => {\n convertToFormValues(realm, setValue);\n setValue(\"supportedLocales\", defaultSupportedLocales);\n };\n\n useEffect(setupForm, []);\n\n const watchSupportedLocales: string[] = useWatch({\n control,\n name: \"supportedLocales\",\n defaultValue: defaultSupportedLocales,\n });\n\n const internationalizationEnabled = useWatch({\n control,\n name: \"internationalizationEnabled\",\n defaultValue: realm.internationalizationEnabled,\n });\n\n const defaultLocales = useWatch({\n name: \"defaultLocale\",\n control,\n defaultValue: realm.defaultLocale ? [realm.defaultLocale] : [],\n });\n\n return (\n setActiveTab(key as number)}\n >\n {t(\"locales\")}}\n data-testid=\"rs-localization-locales-tab\"\n >\n \n \n \n {internationalizationEnabled && (\n <>\n ({\n key: l,\n value: localeToDisplayName(l, whoAmI.getLocale()) || l,\n }))}\n />\n ({\n key: l,\n value: localeToDisplayName(l, whoAmI.getLocale()) || l,\n }))}\n />\n \n )}\n \n \n \n {t(\"save\")}\n \n \n \n \n \n {t(\"realmOverrides\")} }\n data-testid=\"rs-localization-realm-overrides-tab\"\n >\n \n \n {t(\"effectiveMessageBundles\")}}\n data-testid=\"rs-localization-effective-message-bundles-tab\"\n >\n \n \n \n );\n};\n","import { Trans, useTranslation } from \"react-i18next\";\nimport { TextControl } from \"@keycloak/keycloak-ui-shared\";\nimport { FormattedLink } from \"../../components/external-link/FormattedLink\";\n\ntype HelpLinkTextInputProps = {\n fieldName: string;\n url: string;\n};\n\nexport const HelpLinkTextInput = ({\n fieldName,\n url,\n}: HelpLinkTextInputProps) => {\n const { t } = useTranslation();\n const name = fieldName.substr(fieldName.indexOf(\".\") + 1);\n return (\n \n Default value prevents pages from being included\n \n \n }\n />\n );\n};\n","import { useEffect } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { ActionGroup, Button } from \"@patternfly/react-core\";\n\nimport type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { HelpLinkTextInput } from \"./HelpLinkTextInput\";\nimport { convertToFormValues } from \"../../util\";\n\nimport \"./security-defences.css\";\n\ntype HeadersFormProps = {\n realm: RealmRepresentation;\n save: (realm: RealmRepresentation) => void;\n};\n\nexport const HeadersForm = ({ realm, save }: HeadersFormProps) => {\n const { t } = useTranslation();\n const form = useForm();\n const {\n setValue,\n formState: { isDirty },\n handleSubmit,\n } = form;\n\n const setupForm = () => convertToFormValues(realm, setValue);\n useEffect(setupForm, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n\n \n \n {t(\"save\")}\n \n \n \n \n \n );\n};\n","import { CSSProperties } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { TimeSelectorControl } from \"../../components/time-selector/TimeSelectorControl\";\n\nexport const Time = ({\n name,\n style,\n}: {\n name: string;\n style?: CSSProperties;\n}) => {\n const { t } = useTranslation();\n return (\n \n );\n};\n","import type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport {\n HelpItem,\n KeycloakSelect,\n NumberControl,\n SelectVariant,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n Button,\n FormGroup,\n SelectOption,\n} from \"@patternfly/react-core\";\nimport { useEffect, useState } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { convertToFormValues } from \"../../util\";\nimport { Time } from \"./Time\";\n\ntype BruteForceDetectionProps = {\n realm: RealmRepresentation;\n save: (realm: RealmRepresentation) => void;\n};\n\nexport const BruteForceDetection = ({\n realm,\n save,\n}: BruteForceDetectionProps) => {\n const { t } = useTranslation();\n const form = useForm();\n const {\n setValue,\n handleSubmit,\n formState: { isDirty },\n } = form;\n\n const [isBruteForceModeOpen, setIsBruteForceModeOpen] = useState(false);\n const [isBruteForceModeUpdated, setIsBruteForceModeUpdated] = useState(false);\n\n enum BruteForceMode {\n Disabled = \"Disabled\",\n PermanentLockout = \"PermanentLockout\",\n TemporaryLockout = \"TemporaryLockout\",\n PermanentAfterTemporaryLockout = \"PermanentAfterTemporaryLockout\",\n }\n\n const bruteForceModes = [\n BruteForceMode.Disabled,\n BruteForceMode.PermanentLockout,\n BruteForceMode.TemporaryLockout,\n BruteForceMode.PermanentAfterTemporaryLockout,\n ];\n\n const setupForm = () => {\n convertToFormValues(realm, setValue);\n setIsBruteForceModeUpdated(false);\n };\n useEffect(setupForm, []);\n\n const bruteForceMode = (() => {\n if (!form.getValues(\"bruteForceProtected\")) {\n return BruteForceMode.Disabled;\n }\n if (!form.getValues(\"permanentLockout\")) {\n return BruteForceMode.TemporaryLockout;\n }\n return form.getValues(\"maxTemporaryLockouts\") == 0\n ? BruteForceMode.PermanentLockout\n : BruteForceMode.PermanentAfterTemporaryLockout;\n })();\n\n return (\n \n \n \n }\n >\n setIsBruteForceModeOpen(!isBruteForceModeOpen)}\n onSelect={(value) => {\n switch (value as BruteForceMode) {\n case BruteForceMode.Disabled:\n form.setValue(\"bruteForceProtected\", false);\n form.setValue(\"permanentLockout\", false);\n form.setValue(\"maxTemporaryLockouts\", 0);\n break;\n case BruteForceMode.TemporaryLockout:\n form.setValue(\"bruteForceProtected\", true);\n form.setValue(\"permanentLockout\", false);\n form.setValue(\"maxTemporaryLockouts\", 0);\n break;\n case BruteForceMode.PermanentLockout:\n form.setValue(\"bruteForceProtected\", true);\n form.setValue(\"permanentLockout\", true);\n form.setValue(\"maxTemporaryLockouts\", 0);\n break;\n case BruteForceMode.PermanentAfterTemporaryLockout:\n form.setValue(\"bruteForceProtected\", true);\n form.setValue(\"permanentLockout\", true);\n form.setValue(\"maxTemporaryLockouts\", 1);\n break;\n }\n setIsBruteForceModeUpdated(true);\n setIsBruteForceModeOpen(false);\n }}\n selections={bruteForceMode}\n variant={SelectVariant.single}\n isOpen={isBruteForceModeOpen}\n data-testid=\"select-brute-force-mode\"\n aria-label={t(\"selectUnmanagedAttributePolicy\")}\n >\n {bruteForceModes.map((mode) => (\n \n {t(`bruteForceMode.${mode}`)}\n \n ))}\n \n \n {bruteForceMode !== BruteForceMode.Disabled && (\n <>\n \n {bruteForceMode ===\n BruteForceMode.PermanentAfterTemporaryLockout && (\n \n )}\n {(bruteForceMode === BruteForceMode.TemporaryLockout ||\n bruteForceMode ===\n BruteForceMode.PermanentAfterTemporaryLockout) && (\n <>\n \n );\n};\n","import { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { PageSection, Tab, Tabs, TabTitleText } from \"@patternfly/react-core\";\n\nimport type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport { HeadersForm } from \"./HeadersForm\";\nimport { BruteForceDetection } from \"./BruteForceDetection\";\n\ntype SecurityDefensesProps = {\n realm: RealmRepresentation;\n save: (realm: RealmRepresentation) => void;\n};\n\nexport const SecurityDefenses = ({ realm, save }: SecurityDefensesProps) => {\n const { t } = useTranslation();\n const [activeTab, setActiveTab] = useState(10);\n return (\n setActiveTab(key as number)}\n >\n {t(\"headers\")}}\n >\n \n \n \n \n {t(\"bruteForceDetection\")}}\n >\n \n \n \n \n \n );\n};\n","import type { UserProfileGroup } from \"@keycloak/keycloak-admin-client/lib/defs/userProfileMetadata\";\nimport {\n Button,\n ButtonVariant,\n PageSection,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { useEffect, useState } from \"react\";\nimport { Trans, useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\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 { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { toEditAttributesGroup } from \"../routes/EditAttributesGroup\";\nimport { toNewAttributesGroup } from \"../routes/NewAttributesGroup\";\nimport { useUserProfile } from \"./UserProfileContext\";\nimport useLocale from \"../../utils/useLocale\";\nimport { useAdminClient } from \"../../admin-client\";\n\ntype AttributesGroupTabProps = {\n setTableData: React.Dispatch<\n React.SetStateAction[] | undefined>\n >;\n};\n\nexport const AttributesGroupTab = ({\n setTableData,\n}: AttributesGroupTabProps) => {\n const { adminClient } = useAdminClient();\n const { config, save } = useUserProfile();\n const { t } = useTranslation();\n const combinedLocales = useLocale();\n const navigate = useNavigate();\n const { realm } = useRealm();\n const [key, setKey] = useState(0);\n const [groupToDelete, setGroupToDelete] = useState();\n\n // Refresh data in table when config changes.\n useEffect(() => setKey((value) => value + 1), [config]);\n\n async function loader() {\n return config?.groups ?? [];\n }\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"deleteDialogTitle\",\n children: (\n \n {\" \"}\n {{ group: groupToDelete?.name }}.\n \n ),\n continueButtonLabel: \"delete\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n const groups = (config?.groups ?? []).filter(\n (group) => group !== groupToDelete,\n );\n const translationsForDisplayHeaderToDelete =\n groupToDelete?.displayHeader?.substring(\n 2,\n groupToDelete?.displayHeader.length - 1,\n );\n const translationsForDisplayDescriptionToDelete =\n groupToDelete?.displayDescription?.substring(\n 2,\n groupToDelete?.displayDescription.length - 1,\n );\n\n try {\n await Promise.all(\n combinedLocales.map(async (locale) => {\n try {\n const response =\n await adminClient.realms.getRealmLocalizationTexts({\n realm,\n selectedLocale: locale,\n });\n\n if (response) {\n await adminClient.realms.deleteRealmLocalizationTexts({\n realm,\n selectedLocale: locale,\n key: translationsForDisplayHeaderToDelete,\n });\n\n await adminClient.realms.deleteRealmLocalizationTexts({\n realm,\n selectedLocale: locale,\n key: translationsForDisplayDescriptionToDelete,\n });\n\n const updatedData =\n await adminClient.realms.getRealmLocalizationTexts({\n realm,\n selectedLocale: locale,\n });\n setTableData([updatedData]);\n }\n } catch (error) {\n console.error(`Error removing translations for ${locale}`);\n }\n }),\n );\n\n save(\n { ...config, groups },\n {\n successMessageKey: \"deleteSuccess\",\n errorMessageKey: \"deleteAttributeGroupError\",\n },\n );\n } catch (error) {\n console.error(\n `Error removing translations or updating attributes group: ${error}`,\n );\n }\n },\n });\n\n function deleteAttributeGroup(group: UserProfileGroup) {\n setGroupToDelete(group);\n toggleDeleteDialog();\n }\n\n return (\n \n \n \n (\n \n )}\n >\n {t(\"createGroupText\")}\n \n \n }\n columns={[\n {\n name: \"name\",\n displayKey: \"columnName\",\n cellRenderer: (group) => (\n \n {group.name}\n \n ),\n },\n {\n name: \"displayHeader\",\n displayKey: \"columnDisplayName\",\n },\n {\n name: \"displayDescription\",\n displayKey: \"columnDisplayDescription\",\n },\n ]}\n actions={[\n {\n title: t(\"delete\"),\n onRowClick: deleteAttributeGroup,\n } as Action,\n ]}\n emptyState={\n navigate(toNewAttributesGroup({ realm }))}\n />\n }\n />\n \n );\n};\n","import type { UserProfileAttribute } from \"@keycloak/keycloak-admin-client/lib/defs/userProfileMetadata\";\nimport { KeycloakSelect, SelectVariant } from \"@keycloak/keycloak-ui-shared\";\nimport {\n Button,\n ButtonVariant,\n Divider,\n SelectOption,\n Toolbar,\n ToolbarContent,\n ToolbarItem,\n} from \"@patternfly/react-core\";\nimport { FilterIcon } from \"@patternfly/react-icons\";\nimport { uniqBy } from \"lodash-es\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { DraggableTable } from \"../../authentication/components/DraggableTable\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { KeycloakSpinner } from \"../../components/keycloak-spinner/KeycloakSpinner\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport useLocale from \"../../utils/useLocale\";\nimport useToggle from \"../../utils/useToggle\";\nimport { toAddAttribute } from \"../routes/AddAttribute\";\nimport { toAttribute } from \"../routes/Attribute\";\nimport { useUserProfile } from \"./UserProfileContext\";\n\nconst RESTRICTED_ATTRIBUTES = [\"username\", \"email\"];\n\ntype movedAttributeType = UserProfileAttribute;\n\ntype AttributesTabProps = {\n setTableData: React.Dispatch<\n React.SetStateAction[] | undefined>\n >;\n};\n\nexport const AttributesTab = ({ setTableData }: AttributesTabProps) => {\n const { adminClient } = useAdminClient();\n const { config, save } = useUserProfile();\n const { realm } = useRealm();\n const { t } = useTranslation();\n const combinedLocales = useLocale();\n const navigate = useNavigate();\n const [filter, setFilter] = useState(\"allGroups\");\n const [isFilterTypeDropdownOpen, toggleIsFilterTypeDropdownOpen] =\n useToggle();\n const [data, setData] = useState(config?.attributes);\n const [attributeToDelete, setAttributeToDelete] = useState(\"\");\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: t(\"deleteAttributeConfirmTitle\"),\n messageKey: t(\"deleteAttributeConfirm\", {\n attributeName: attributeToDelete,\n }),\n continueButtonLabel: t(\"delete\"),\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n if (!config?.attributes) return;\n\n const translationsToDelete = config.attributes.find(\n (attribute) => attribute.name === attributeToDelete,\n )?.displayName;\n\n // Remove the the `${}` from translationsToDelete string\n const formattedTranslationsToDelete = translationsToDelete?.substring(\n 2,\n translationsToDelete.length - 1,\n );\n\n try {\n await Promise.all(\n combinedLocales.map(async (locale) => {\n try {\n const response =\n await adminClient.realms.getRealmLocalizationTexts({\n realm,\n selectedLocale: locale,\n });\n\n if (response) {\n await adminClient.realms.deleteRealmLocalizationTexts({\n realm,\n selectedLocale: locale,\n key: formattedTranslationsToDelete,\n });\n\n const updatedData =\n await adminClient.realms.getRealmLocalizationTexts({\n realm,\n selectedLocale: locale,\n });\n setTableData([updatedData]);\n }\n } catch (error) {\n console.error(`Error removing translations for ${locale}`);\n }\n }),\n );\n\n const updatedAttributes = config.attributes.filter(\n (attribute) => attribute.name !== attributeToDelete,\n );\n\n save(\n { ...config, attributes: updatedAttributes, groups: config.groups },\n {\n successMessageKey: \"deleteAttributeSuccess\",\n errorMessageKey: \"deleteAttributeError\",\n },\n );\n\n setAttributeToDelete(\"\");\n } catch (error) {\n console.error(\n `Error removing translations or updating attributes: ${error}`,\n );\n }\n },\n });\n\n if (!config) {\n return ;\n }\n\n const attributes = config.attributes ?? [];\n const groups = config.groups ?? [];\n\n const executeMove = async (\n attribute: UserProfileAttribute,\n newIndex: number,\n ) => {\n const fromIndex = attributes.findIndex((attr) => {\n return attr.name === attribute.name;\n });\n\n let movedAttribute: movedAttributeType = {};\n movedAttribute = attributes[fromIndex];\n attributes.splice(fromIndex, 1);\n attributes.splice(newIndex, 0, movedAttribute);\n\n save(\n { attributes, groups },\n {\n successMessageKey: \"updatedUserProfileSuccess\",\n errorMessageKey: \"updatedUserProfileError\",\n },\n );\n };\n\n const cellFormatter = (row: UserProfileAttribute) => (\n \n {row.name}\n \n );\n\n return (\n <>\n \n \n \n }\n onSelect={(value) => {\n const filter = value.toString();\n setFilter(filter);\n setData(\n filter === \"allGroups\"\n ? attributes\n : attributes.filter((attr) => attr.group === filter),\n );\n toggleIsFilterTypeDropdownOpen();\n }}\n selections={filter === \"allGroups\" ? t(filter) : filter}\n >\n {[\n \n {t(\"allGroups\")}\n ,\n ...uniqBy(\n attributes.filter((attr) => !!attr.group),\n \"group\",\n ).map((attr) => (\n \n {attr.group}\n \n )),\n ]}\n \n \n \n (\n \n )}\n >\n {t(\"createAttribute\")}\n \n \n \n \n \n \n {\n const keys = attributes.map((e) => e.name);\n const newIndex = items.indexOf(nameDragged);\n const oldIndex = keys.indexOf(nameDragged);\n const dragged = attributes[oldIndex];\n if (!dragged.name) return;\n\n executeMove(dragged, newIndex);\n }}\n actions={[\n {\n title: t(\"edit\"),\n onClick: (_key, _idx, component) => {\n navigate(\n toAttribute({\n realm,\n attributeName: component.name,\n }),\n );\n },\n },\n {\n title: t(\"delete\"),\n isActionable: ({ name }) => !RESTRICTED_ATTRIBUTES.includes(name!),\n isDisabled: RESTRICTED_ATTRIBUTES.includes(name!),\n onClick: (_key, _idx, component) => {\n setAttributeToDelete(component.name);\n toggleDeleteDialog();\n },\n },\n ]}\n columns={[\n {\n name: \"name\",\n displayKey: t(\"attributeName\"),\n cellRenderer: cellFormatter,\n },\n {\n name: \"displayName\",\n displayKey: t(\"attributeDisplayName\"),\n },\n {\n name: \"group\",\n displayKey: t(\"attributeGroup\"),\n },\n ]}\n data={data ?? attributes}\n />\n \n );\n};\n","import { CodeEditor, Language } from \"@patternfly/react-code-editor\";\nimport { ActionGroup, Button, Form, PageSection } from \"@patternfly/react-core\";\nimport type { editor } from \"monaco-editor\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { prettyPrintJSON } from \"../../util\";\nimport { useUserProfile } from \"./UserProfileContext\";\n\nexport const JsonEditorTab = () => {\n const { config, save, isSaving } = useUserProfile();\n const { t } = useTranslation();\n const { addError } = useAlerts();\n const [editor, setEditor] = useState();\n\n useEffect(() => resetCode(), [config, editor]);\n\n function resetCode() {\n editor?.setValue(config ? prettyPrintJSON(config) : \"\");\n }\n\n async function handleSave() {\n const value = editor?.getValue();\n\n if (!value) {\n return;\n }\n\n try {\n await save(JSON.parse(value));\n } catch (error) {\n addError(\"invalidJsonError\", error);\n return;\n }\n }\n\n return (\n \n setEditor(editor)}\n isLanguageLabelVisible\n />\n
\n \n \n {t(\"save\")}\n \n \n \n
\n
\n );\n};\n","import { Tab, TabTitleText } from \"@patternfly/react-core\";\n\nimport { useTranslation } from \"react-i18next\";\nimport {\n RoutableTabs,\n useRoutableTab,\n} from \"../../components/routable-tabs/RoutableTabs\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport {\n toUserProfile,\n UserProfileTab as IUserProfileTab,\n} from \"../routes/UserProfile\";\nimport { AttributesGroupTab } from \"./AttributesGroupTab\";\nimport { AttributesTab } from \"./AttributesTab\";\nimport { JsonEditorTab } from \"./JsonEditorTab\";\nimport { UserProfileProvider } from \"./UserProfileContext\";\n\ntype UserProfileTabProps = {\n setTableData: React.Dispatch<\n React.SetStateAction[] | undefined>\n >;\n};\n\nexport const UserProfileTab = ({ setTableData }: UserProfileTabProps) => {\n const { realm } = useRealm();\n const { t } = useTranslation();\n\n const useTab = (tab: IUserProfileTab) =>\n useRoutableTab(toUserProfile({ realm, tab }));\n\n const attributesTab = useTab(\"attributes\");\n const attributesGroupTab = useTab(\"attributes-group\");\n const jsonEditorTab = useTab(\"json-editor\");\n\n return (\n \n \n {t(\"attributes\")}}\n data-testid=\"attributesTab\"\n {...attributesTab}\n >\n \n \n {t(\"attributesGroup\")}}\n data-testid=\"attributesGroupTab\"\n {...attributesGroupTab}\n >\n \n \n {t(\"jsonEditor\")}}\n data-testid=\"jsonEditorTab\"\n {...jsonEditorTab}\n >\n \n \n \n \n );\n};\n","import { fetchWithError } from \"@keycloak/keycloak-admin-client\";\nimport type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport { UserProfileConfig } from \"@keycloak/keycloak-admin-client/lib/defs/userProfileMetadata\";\nimport { useEnvironment } from \"@keycloak/keycloak-ui-shared\";\nimport {\n AlertVariant,\n ButtonVariant,\n Divider,\n DropdownItem,\n PageSection,\n Tab,\n TabTitleText,\n Tooltip,\n} from \"@patternfly/react-core\";\nimport { useEffect, useState } from \"react\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport { useAdminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../components/confirm-dialog/ConfirmDialog\";\nimport type { KeyValueType } from \"../components/key-value-form/key-value-convert\";\nimport {\n RoutableTabs,\n useRoutableTab,\n} from \"../components/routable-tabs/RoutableTabs\";\nimport { ViewHeader } from \"../components/view-header/ViewHeader\";\nimport { useRealms } from \"../context/RealmsContext\";\nimport { useAccess } from \"../context/access/Access\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { toDashboard } from \"../dashboard/routes/Dashboard\";\nimport type { Environment } from \"../environment\";\nimport helpUrls from \"../help-urls\";\nimport { convertFormValuesToObject, convertToFormValues } from \"../util\";\nimport { getAuthorizationHeaders } from \"../utils/getAuthorizationHeaders\";\nimport { joinPath } from \"../utils/joinPath\";\nimport useIsFeatureEnabled, { Feature } from \"../utils/useIsFeatureEnabled\";\nimport useLocale from \"../utils/useLocale\";\nimport { RealmSettingsEmailTab } from \"./EmailTab\";\nimport { RealmSettingsGeneralTab } from \"./GeneralTab\";\nimport { RealmSettingsLoginTab } from \"./LoginTab\";\nimport { PartialExportDialog } from \"./PartialExport\";\nimport { PartialImportDialog } from \"./PartialImport\";\nimport { PoliciesTab } from \"./PoliciesTab\";\nimport ProfilesTab from \"./ProfilesTab\";\nimport { RealmSettingsSessionsTab } from \"./SessionsTab\";\nimport { RealmSettingsThemesTab } from \"./ThemesTab\";\nimport { RealmSettingsTokensTab } from \"./TokensTab\";\nimport { UserRegistration } from \"./UserRegistration\";\nimport { EventsTab } from \"./event-config/EventsTab\";\nimport { KeysTab } from \"./keys/KeysTab\";\nimport { LocalizationTab } from \"./localization/LocalizationTab\";\nimport { ClientPoliciesTab, toClientPolicies } from \"./routes/ClientPolicies\";\nimport { RealmSettingsTab, toRealmSettings } from \"./routes/RealmSettings\";\nimport { SecurityDefenses } from \"./security-defences/SecurityDefenses\";\nimport { UserProfileTab } from \"./user-profile/UserProfileTab\";\n\nexport interface UIRealmRepresentation extends RealmRepresentation {\n upConfig?: UserProfileConfig;\n}\n\ntype RealmSettingsHeaderProps = {\n onChange: (value: boolean) => void;\n value: boolean;\n save: () => void;\n realmName: string;\n refresh: () => void;\n};\n\nconst RealmSettingsHeader = ({\n save,\n onChange,\n value,\n realmName,\n refresh,\n}: RealmSettingsHeaderProps) => {\n const { adminClient } = useAdminClient();\n const { environment } = useEnvironment();\n const { t } = useTranslation();\n const { refresh: refreshRealms } = useRealms();\n const { addAlert, addError } = useAlerts();\n const navigate = useNavigate();\n const [partialImportOpen, setPartialImportOpen] = useState(false);\n const [partialExportOpen, setPartialExportOpen] = useState(false);\n const { hasAccess } = useAccess();\n const canManageRealm = hasAccess(\"manage-realm\");\n\n const [toggleDisableDialog, DisableConfirm] = useConfirmDialog({\n titleKey: \"disableConfirmTitle\",\n messageKey: \"disableConfirmRealm\",\n continueButtonLabel: \"disable\",\n onConfirm: () => {\n onChange(!value);\n save();\n },\n });\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"deleteConfirmTitle\",\n messageKey: \"deleteConfirmRealmSetting\",\n continueButtonLabel: \"delete\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n await adminClient.realms.del({ realm: realmName });\n addAlert(t(\"deletedSuccessRealmSetting\"), AlertVariant.success);\n await refreshRealms();\n navigate(toDashboard({ realm: environment.masterRealm }));\n refresh();\n } catch (error) {\n addError(\"deleteErrorRealmSetting\", error);\n }\n },\n });\n\n return (\n <>\n \n \n setPartialImportOpen(!partialImportOpen)}\n />\n setPartialExportOpen(false)}\n />\n {\n setPartialImportOpen(true);\n }}\n >\n {t(\"partialImport\")}\n ,\n setPartialExportOpen(true)}\n >\n {t(\"partialExport\")}\n ,\n ,\n \n {t(\"delete\")}\n ,\n ]}\n isEnabled={value}\n isReadOnly={!canManageRealm}\n onToggle={(value) => {\n if (!value) {\n toggleDisableDialog();\n } else {\n onChange(value);\n save();\n }\n }}\n />\n \n );\n};\n\nexport const RealmSettingsTabs = () => {\n const { adminClient } = useAdminClient();\n const { t } = useTranslation();\n const { addAlert, addError } = useAlerts();\n const { realm: realmName, realmRepresentation: realm, refresh } = useRealm();\n const { refresh: refreshRealms } = useRealms();\n const combinedLocales = useLocale();\n const navigate = useNavigate();\n const isFeatureEnabled = useIsFeatureEnabled();\n const [tableData, setTableData] = useState<\n Record[] | undefined\n >(undefined);\n const { control, setValue, getValues } = useForm({\n mode: \"onChange\",\n });\n const [key, setKey] = useState(0);\n const refreshHeader = () => {\n setKey(key + 1);\n };\n\n const setupForm = (r: RealmRepresentation = realm!) => {\n convertToFormValues(r, setValue);\n };\n\n useEffect(() => {\n setupForm();\n const fetchLocalizationTexts = async () => {\n try {\n await Promise.all(\n combinedLocales.map(async (locale) => {\n try {\n const response =\n await adminClient.realms.getRealmLocalizationTexts({\n realm: realmName,\n selectedLocale: locale,\n });\n\n if (response) {\n setTableData([response]);\n }\n } catch (error) {\n return [];\n }\n }),\n );\n } catch (error) {\n return [];\n }\n };\n fetchLocalizationTexts();\n }, [setValue, realm]);\n\n const save = async (r: UIRealmRepresentation) => {\n r = convertFormValuesToObject(r);\n if (\n r.attributes?.[\"acr.loa.map\"] &&\n typeof r.attributes[\"acr.loa.map\"] !== \"string\"\n ) {\n r.attributes[\"acr.loa.map\"] = JSON.stringify(\n Object.fromEntries(\n (r.attributes[\"acr.loa.map\"] as KeyValueType[])\n .filter(({ key }) => key !== \"\")\n .map(({ key, value }) => [key, value]),\n ),\n );\n }\n\n try {\n const savedRealm: UIRealmRepresentation = {\n ...realm,\n ...r,\n id: r.realm,\n };\n\n // For the default value, null is expected instead of an empty string.\n if (savedRealm.smtpServer?.port === \"\") {\n savedRealm.smtpServer = { ...savedRealm.smtpServer, port: null };\n }\n const response = await fetchWithError(\n joinPath(adminClient.baseUrl, `admin/realms/${realmName}/ui-ext`),\n {\n method: \"PUT\",\n body: JSON.stringify(savedRealm),\n headers: {\n \"Content-Type\": \"application/json\",\n ...getAuthorizationHeaders(await adminClient.getAccessToken()),\n },\n },\n );\n if (!response.ok) throw new Error(response.statusText);\n addAlert(t(\"realmSaveSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"realmSaveError\", error);\n }\n\n const isRealmRenamed = realmName !== (r.realm || realm?.realm);\n if (isRealmRenamed) {\n await refreshRealms();\n navigate(toRealmSettings({ realm: r.realm!, tab: \"general\" }));\n }\n refresh();\n };\n\n const useTab = (tab: RealmSettingsTab) =>\n useRoutableTab(toRealmSettings({ realm: realmName, tab }));\n\n const generalTab = useTab(\"general\");\n const loginTab = useTab(\"login\");\n const emailTab = useTab(\"email\");\n const themesTab = useTab(\"themes\");\n const keysTab = useTab(\"keys\");\n const eventsTab = useTab(\"events\");\n const localizationTab = useTab(\"localization\");\n const securityDefensesTab = useTab(\"security-defenses\");\n const sessionsTab = useTab(\"sessions\");\n const tokensTab = useTab(\"tokens\");\n const clientPoliciesTab = useTab(\"client-policies\");\n const userProfileTab = useTab(\"user-profile\");\n const userRegistrationTab = useTab(\"user-registration\");\n const { hasAccess, hasSomeAccess } = useAccess();\n const canViewOrManageEvents =\n hasAccess(\"view-realm\") && hasSomeAccess(\"view-events\", \"manage-events\");\n const canViewUserRegistration =\n hasAccess(\"view-realm\") && hasSomeAccess(\"view-clients\", \"manage-clients\");\n\n const useClientPoliciesTab = (tab: ClientPoliciesTab) =>\n useRoutableTab(\n toClientPolicies({\n realm: realmName,\n tab,\n }),\n );\n\n const clientPoliciesProfilesTab = useClientPoliciesTab(\"profiles\");\n const clientPoliciesPoliciesTab = useClientPoliciesTab(\"policies\");\n\n return (\n <>\n (\n save(getValues())}\n />\n )}\n />\n \n \n {t(\"general\")}}\n data-testid=\"rs-general-tab\"\n {...generalTab}\n >\n \n \n {t(\"login\")}}\n data-testid=\"rs-login-tab\"\n {...loginTab}\n >\n \n \n {t(\"email\")}}\n data-testid=\"rs-email-tab\"\n {...emailTab}\n >\n \n \n {t(\"themes\")}}\n data-testid=\"rs-themes-tab\"\n {...themesTab}\n >\n \n \n {t(\"keys\")}}\n data-testid=\"rs-keys-tab\"\n {...keysTab}\n >\n \n \n {canViewOrManageEvents && (\n {t(\"events\")}}\n data-testid=\"rs-realm-events-tab\"\n {...eventsTab}\n >\n \n \n )}\n {t(\"localization\")}}\n data-testid=\"rs-localization-tab\"\n {...localizationTab}\n >\n \n \n {t(\"securityDefences\")}}\n data-testid=\"rs-security-defenses-tab\"\n {...securityDefensesTab}\n >\n \n \n {t(\"sessions\")}}\n data-testid=\"rs-sessions-tab\"\n {...sessionsTab}\n >\n \n \n {t(\"tokens\")}}\n data-testid=\"rs-tokens-tab\"\n {...tokensTab}\n >\n \n \n {isFeatureEnabled(Feature.ClientPolicies) && (\n {t(\"clientPolicies\")}}\n data-testid=\"rs-clientPolicies-tab\"\n {...clientPoliciesTab}\n >\n \n {t(\"profiles\")}}\n tooltip={\n \n }\n {...clientPoliciesProfilesTab}\n >\n \n \n {t(\"policies\")}}\n tooltip={\n \n }\n >\n \n \n \n \n )}\n {t(\"userProfile\")}}\n data-testid=\"rs-user-profile-tab\"\n {...userProfileTab}\n >\n \n \n {canViewUserRegistration && (\n {t(\"userRegistration\")}}\n data-testid=\"rs-userRegistration-tab\"\n {...userRegistrationTab}\n >\n \n \n )}\n \n \n \n );\n};\n","import { RealmSettingsTabs } from \"./RealmSettingsTabs\";\n\nexport default function RealmSettingsSection() {\n return ;\n}\n"],"names":["SelectGroup","_a","children","className","label","props","__rest","React","MenuGroup","css","flatten","array","length","baseFlatten","flatRest","func","setToString","overRest","objectTag","funcProto","objectProto","funcToString","hasOwnProperty","objectCtorString","isPlainObject","value","isObjectLike","baseGetTag","proto","getPrototype","Ctor","parent","object","path","baseGet","baseSlice","baseUnset","castPath","toKey","last","customOmitClone","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","omit","paths","result","isDeep","arrayMap","copyObject","getAllKeysIn","baseClone","uniqWith","comparator","baseUniq","useCurrentUser","adminClient","useAdminClient","whoAmI","useWhoAmI","currentUser","setCurrentUser","useState","userId","useFetch","RealmSettingsEmailTab","realm","save","useTranslation","realmName","useRealm","addAlert","addError","useAlerts","form","useForm","control","handleSubmit","watch","resetForm","getValues","reset","watchFromValue","watchHostValue","isTesting","toggleTest","useToggle","authenticationEnabled","useWatch","testConnection","toNumber","toBoolean","valueMapper","serverSettings","key","mapperFn","AlertVariant","error","PageSection","jsxs","FormProvider","jsx","FormPanel","FormAccess","TextControl","emailRegexPattern","FormGroup","Controller","field","Checkbox","_event","SwitchControl","Fragment","PasswordControl","Alert","AlertActionLink","Link","toUser","ActionGroup","ActionListItem","Button","RealmSettingsGeneralTab","userProfileConfig","setUserProfileConfig","config","RealmSettingsGeneralTabForm","KeycloakSpinner","REQUIRE_SSL_TYPES","UNMANAGED_ATTRIBUTE_POLICIES","UnmanagedAttributePolicy","t","setValue","isDirty","errors","isOrganizationsEnabled","useIsFeatureEnabled","Feature","setupForm","convertToFormValues","convertAttributeNameToForm","useEffect","onSubmit","unmanagedAttributePolicy","data","upConfig","ClipboardCopy","FormErrorText","SelectControl","sslType","HelpItem","KeyValueInput","DefaultSwitchControl","policy","Stack","StackItem","FormattedLink","addTrailingSlash","RealmSettingsLoginTab","refresh","updateSwitchValue","switches","name","s","Switch","PartialExportDialog","isOpen","onClose","exportGroupsAndRoles","setExportGroupsAndRoles","exportClients","setExportClients","isExporting","setIsExporting","showWarning","exportRealm","realmExport","saveAs","prettyPrintJSON","Modal","ModalVariant","ButtonVariant","TextContent","Text","Form","val","INITIAL_RESOURCES","PartialImportDialog","importedFile","setImportedFile","isFileSelected","isRealmSelectOpen","setIsRealmSelectOpen","isCollisionSelectOpen","setIsCollisionSelectOpen","importInProgress","setImportInProgress","collisionOption","setCollisionOption","targetRealm","setTargetRealm","importResponse","setImportResponse","resourcesToImport","setResourcesToImport","isAnyResourceChecked","checked","resetResourcesToImport","resetInputState","handleFileChange","handleRealmSelect","handleResourceCheckBox","event","resource","realmSelectOptions","realms","SelectOption","handleCollisionSelect","option","collisionOptions","targetHasResources","targetHasResource","targetHasRealmRoles","targetHasClientRoles","itemCount","clientRolesCount","clientRoles","total","role","resourceDataListItem","resourceDisplayName","DataListItem","DataListItemRow","DataListItemCells","DataListCell","jsonForImport","jsonToImport","doImport","importResults","importModal","JsonFileUpload","Divider","KeycloakSelect","DataList","importCompleteMessage","loader","first","max","ActionLabel","importRecord","Label","TypeRenderer","typeMap","importCompletedModal","KeycloakDataTable","PoliciesTab","navigate","useNavigate","show","setShow","policies","setPolicies","selectedPolicy","setSelectedPolicy","setKey","code","setCode","tablePolicies","setTablePolicies","allPolicies","globalPolicies","allClientPolicies","saveStatus","switchValues","updatedPolicies","enabled","enabledPolicy","toClientPolicies","normalizePolicy","obj","changedPolicies","changedGlobalPolicies","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","newPolicy","Flex","FlexItem","Title","Radio","CodeEditor","Language","ListEmptyState","toAddClientPolicy","ToolbarItem","item","toEditClientPolicy","clientPolicy","SwitchRenderer","onConfirm","toggleDisableDialog","DisableConfirm","ProfilesTab","tableProfiles","setTableProfiles","globalProfiles","setGlobalProfiles","selectedProfile","setSelectedProfile","allProfiles","profiles","allClientProfiles","normalizeProfile","profile","updatedProfiles","cellFormatter","row","toClientProfile","changedProfiles","changedGlobalProfiles","toAddClientProfile","RealmSettingsSessionsTab","formState","offlineSessionMaxEnabled","TimeSelector","RealmSettingsThemesTab","loginThemeOpen","setLoginThemeOpen","accountThemeOpen","setAccountThemeOpen","adminUIThemeOpen","setAdminUIThemeOpen","emailThemeOpen","setEmailThemeOpen","themeTypes","useServerInfo","SelectVariant","theme","idx","RealmSettingsTokensTab","serverInfo","isFeatureEnabled","defaultSigAlgDrpdwnIsOpen","setDefaultSigAlgDrpdwnOpen","defaultSigAlgOptions","sortProviders","ssoSessionIdleTimeout","revokeRefreshToken","p","NumberInput","newValue","TextInput","FormHelperText","HelperText","HelperTextItem","toHumanFormat","TextVariants","beerify","DefaultsGroupsTab","isKebabOpen","toggleKebab","isGroupPickerOpen","toggleGroupPicker","defaultGroups","setDefaultGroups","selectedRows","setSelectedRows","load","setLoad","reload","useHelp","hasAccess","useAccess","canAddOrRemoveGroups","groups","removeGroup","group","addGroups","toggleRemoveDialog","RemoveDialog","GroupPickerDialog","Popover","Trans","toUserFederation","QuestionCircleIcon","rows","Dropdown","ref","MenuToggle","EllipsisVIcon","DropdownList","DropdownItem","UserRegistration","activeTab","setActiveTab","addComposites","composites","compositeArray","Tabs","_","Tab","TabTitleText","RoleMapping","r","EventsTypeTable","ariaLabelKey","eventTypes","addTypes","onSelect","onDelete","type","AddEventTypesDialog","configured","enums","selectedTypes","setSelectedTypes","selected","EventConfigForm","clear","eventKey","eventsEnabled","TimeSelectorControl","EventListenersForm","eventListeners","EventsTab","tableKey","setTableKey","events","setEvents","setType","addEventType","setAddEventType","eventConfig","updatedEventListener","isEqual","adminEventsExpiration","addEventTypes","eventsTypes","enabledEvents","addEvents","enabledEventTypes","e","FILTER_OPTIONS","SelectFilter","onFilter","filterType","setFilterType","filterDropdownOpen","toggleFilter","FilterIcon","filter","o","KeysListTab","realmComponents","formatDate","useFormatDate","publicKey","setPublicKey","certificate","setCertificate","keyData","setKeyData","filteredKeyData","setFilteredKeyData","provider","component","togglePublicKeyDialog","PublicKeyDialog","toggleCertificateDialog","CertificateDialog","status","emptyFormatter","cellWidth","validTo","toKeysTab","KeyProviderModal","providerType","style","KeyProviderForm","KeyProvidersPicker","keyProviderComponentTypes","KEY_PROVIDER_TYPE","id","KeysProvidersTab","searchVal","setSearchVal","filteredComponents","setFilteredComponents","isCreateModalOpen","handleModalToggle","providerOpen","toggleProviderOpen","defaultUIDisplayName","setDefaultUIDisplayName","selectedComponent","setSelectedComponent","components","useMemo","componentType","onSearch","handleKeyDown","handleInputChange","Toolbar","ToolbarGroup","InputGroup","InputGroupItem","SearchIcon","DraggableTable","itemOrder","updateAll","componentToSave","toKeyProvider","_key","_idx","sortByPriority","b","priorityA","priorityB","KeysTab","setRealmComponents","useTab","tab","useRoutableTab","listTab","providersTab","RoutableTabs","defaultValues","EffectiveMessageBundles","defaultSupportedLocales","defaultLocales","localeSort","useLocaleSort","searchDropdownOpen","setSearchDropdownOpen","searchPerformed","setSearchPerformed","selectThemesOpen","setSelectThemesOpen","selectThemeTypeOpen","setSelectThemeTypeOpen","selectLanguageOpen","setSelectLanguageOpen","activeFilters","setActiveFilters","themes","themeNames","index","self","combinedLocales","filterLabels","isValid","messages","DEFAULT_LOCALE","filteredMessages","m","f","mapByKey","submitSearch","commitFilters","resetSearch","removeFilter","formValues","removeFilterValue","valueToRemove","fieldValue","newFieldValue","newFilters","pickBy","effectiveMessageBunldesSearchFormDisplay","DropdownPanel","selectedValue","ChipGroup","Chip","themeType","language","localeToDisplayName","input","words","word","newWords","i","entry","AddTranslationModal","RealmOverrides","internationalizationEnabled","watchSupportedLocales","tableData","addTranslationModalOpen","setAddTranslationModalOpen","setFilterDropdownOpen","translations","setTranslations","selectMenuLocale","setSelectMenuLocale","kebabOpen","setKebabOpen","selectMenuValueSelected","setSelectMenuValueSelected","tableRows","setTableRows","setMax","setFirst","setFilter","translationForm","currentRealm","selectedRowKeys","setSelectedRowKeys","areAllRowsSelected","setAreAllRowsSelected","editStates","setEditStates","formValue","setFormValue","refreshTable","searchInTranslations","filtered","updatedRows","translation","options","locale","addKeyValue","pair","i18n","handleRowSelect","rowIndex","selectedKey","prevSelected","toggleSelectAllRows","isRowSelected","inputValue","newRows","cloneDeep","newRow","prevEditStates","PaginatingTableToolbar","search","isExpanded","Table","Thead","Tr","Th","Tbody","Td","CheckIcon","TimesIcon","currentValue","prevState","PencilAltIcon","ActionsColumn","LocalizationTab","allLocales","locales","l","HelpLinkTextInput","fieldName","url","HeadersForm","Time","BruteForceDetection","isBruteForceModeOpen","setIsBruteForceModeOpen","isBruteForceModeUpdated","setIsBruteForceModeUpdated","BruteForceMode","bruteForceModes","bruteForceMode","mode","NumberControl","SecurityDefenses","AttributesGroupTab","setTableData","useUserProfile","useLocale","groupToDelete","setGroupToDelete","translationsForDisplayHeaderToDelete","translationsForDisplayDescriptionToDelete","updatedData","deleteAttributeGroup","toNewAttributesGroup","toEditAttributesGroup","RESTRICTED_ATTRIBUTES","AttributesTab","isFilterTypeDropdownOpen","toggleIsFilterTypeDropdownOpen","setData","attributeToDelete","setAttributeToDelete","translationsToDelete","attribute","formattedTranslationsToDelete","updatedAttributes","attributes","executeMove","newIndex","fromIndex","attr","movedAttribute","toAttribute","ToolbarContent","uniqBy","toAddAttribute","nameDragged","items","keys","oldIndex","dragged","JsonEditorTab","isSaving","editor","setEditor","resetCode","handleSave","UserProfileTab","toUserProfile","attributesTab","attributesGroupTab","jsonEditorTab","UserProfileProvider","RealmSettingsHeader","onChange","environment","useEnvironment","refreshRealms","useRealms","partialImportOpen","setPartialImportOpen","partialExportOpen","setPartialExportOpen","canManageRealm","toDashboard","ViewHeader","helpUrls","RealmSettingsTabs","refreshHeader","response","convertFormValuesToObject","savedRealm","fetchWithError","joinPath","getAuthorizationHeaders","toRealmSettings","generalTab","loginTab","emailTab","themesTab","keysTab","eventsTab","localizationTab","securityDefensesTab","sessionsTab","tokensTab","clientPoliciesTab","userProfileTab","userRegistrationTab","hasSomeAccess","canViewOrManageEvents","canViewUserRegistration","useClientPoliciesTab","clientPoliciesProfilesTab","clientPoliciesPoliciesTab","Tooltip","RealmSettingsSection"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy