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

theme.keycloak.v2.admin.resources.assets.RealmSettingsSection-G00jJoQt.js.map Maven / Gradle / Ivy

There is a newer version: 26.0.7
Show newest version
{"version":3,"file":"RealmSettingsSection-G00jJoQt.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=\"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 ))}\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 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 {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\";\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 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 <>\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 actions={[\n {\n title: t(\"remove\"),\n onRowClick: (group) => {\n setSelectedRows([group]);\n toggleRemoveDialog();\n return Promise.resolve(false);\n },\n } as Action,\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={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-labelledby={t(\"theme\")}\n chipGroupComponent={\n \n {\n theme.stopPropagation();\n field.onChange(\"\");\n }}\n >\n {field.value}\n \n \n }\n >\n {[\n ,\n ].concat(\n themeNames.map((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-labelledby={t(\"themeType\")}\n chipGroupComponent={\n \n {\n themeType.stopPropagation();\n field.onChange(\"\");\n }}\n >\n {field.value}\n \n \n }\n >\n {[\n ,\n ].concat(\n themeTypes.map((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 ].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 } 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 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 await adminClient.realms.deleteRealmLocalizationTexts({\n realm: currentRealm!,\n selectedLocale: selectMenuLocale,\n key: key,\n });\n }\n setAreAllRowsSelected(false);\n setSelectedRowKeys([]);\n refreshTable();\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\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 (\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\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 {t(\"events\")}}\n data-testid=\"rs-realm-events-tab\"\n {...eventsTab}\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 {t(\"userRegistration\")}}\n data-testid=\"rs-userRegistration-tab\"\n {...userRegistrationTab}\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","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","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","hasAccess","useAccess","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","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