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

theme.keycloak.v2.admin.resources.assets.EditUser-1999411f.js.map Maven / Gradle / Ivy

There is a newer version: 25.0.1
Show newest version
{"version":3,"file":"EditUser-1999411f.js","sources":["../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/_baseIntersection.js","../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/_castArrayLikeObject.js","../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/intersectionBy.js","../../../../node_modules/.pnpm/[email protected]/node_modules/lodash-es/isEmpty.js","../../src/user/UserAttributes.tsx","../../src/user/UserConsents.tsx","../../src/user/user-credentials/CredentialDataDialog.tsx","../../src/user/user-credentials/CredentialRow.tsx","../../src/user/user-credentials/InlineLabelEdit.tsx","../../src/user/user-credentials/LifespanField.tsx","../../src/user/user-credentials/ResetCredentialDialog.tsx","../../src/user/user-credentials/ResetPasswordDialog.tsx","../../src/user/UserCredentials.tsx","../../src/user/UserGroups.tsx","../../src/user/UserIdPModal.tsx","../../src/user/UserIdentityProviderLinks.tsx","../../src/user/UserRoleMapping.tsx","../../src/user/UserSessions.tsx","../../src/user/EditUser.tsx"],"sourcesContent":["import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n  var includes = comparator ? arrayIncludesWith : arrayIncludes,\n      length = arrays[0].length,\n      othLength = arrays.length,\n      othIndex = othLength,\n      caches = Array(othLength),\n      maxLength = Infinity,\n      result = [];\n\n  while (othIndex--) {\n    var array = arrays[othIndex];\n    if (othIndex && iteratee) {\n      array = arrayMap(array, baseUnary(iteratee));\n    }\n    maxLength = nativeMin(array.length, maxLength);\n    caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n      ? new SetCache(othIndex && array)\n      : undefined;\n  }\n  array = arrays[0];\n\n  var index = -1,\n      seen = caches[0];\n\n  outer:\n  while (++index < length && result.length < maxLength) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (!(seen\n          ? cacheHas(seen, computed)\n          : includes(result, computed, comparator)\n        )) {\n      othIndex = othLength;\n      while (--othIndex) {\n        var cache = caches[othIndex];\n        if (!(cache\n              ? cacheHas(cache, computed)\n              : includes(arrays[othIndex], computed, comparator))\n            ) {\n          continue outer;\n        }\n      }\n      if (seen) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nexport default baseIntersection;\n","import isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n  return isArrayLikeObject(value) ? value : [];\n}\n\nexport default castArrayLikeObject;\n","import arrayMap from './_arrayMap.js';\nimport baseIntersection from './_baseIntersection.js';\nimport baseIteratee from './_baseIteratee.js';\nimport baseRest from './_baseRest.js';\nimport castArrayLikeObject from './_castArrayLikeObject.js';\nimport last from './last.js';\n\n/**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\nvar intersectionBy = baseRest(function(arrays) {\n  var iteratee = last(arrays),\n      mapped = arrayMap(arrays, castArrayLikeObject);\n\n  if (iteratee === last(mapped)) {\n    iteratee = undefined;\n  } else {\n    mapped.pop();\n  }\n  return (mapped.length && mapped[0] === arrays[0])\n    ? baseIntersection(mapped, baseIteratee(iteratee, 2))\n    : [];\n});\n\nexport default intersectionBy;\n","import baseKeys from './_baseKeys.js';\nimport getTag from './_getTag.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLike from './isArrayLike.js';\nimport isBuffer from './isBuffer.js';\nimport isPrototype from './_isPrototype.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n    setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n  if (value == null) {\n    return true;\n  }\n  if (isArrayLike(value) &&\n      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n        isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n    return !value.length;\n  }\n  var tag = getTag(value);\n  if (tag == mapTag || tag == setTag) {\n    return !value.size;\n  }\n  if (isPrototype(value)) {\n    return !baseKeys(value).length;\n  }\n  for (var key in value) {\n    if (hasOwnProperty.call(value, key)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport default isEmpty;\n","import type UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport {\n  AlertVariant,\n  PageSection,\n  PageSectionVariants,\n} from \"@patternfly/react-core\";\nimport { useEffect, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport {\n  AttributeForm,\n  AttributesForm,\n} from \"../components/key-value-form/AttributeForm\";\nimport {\n  arrayToKeyValue,\n  keyValueToArray,\n} from \"../components/key-value-form/key-value-convert\";\nimport { useUserProfile } from \"../realm-settings/user-profile/UserProfileContext\";\n\ntype UserAttributesProps = {\n  user: UserRepresentation;\n};\n\nexport const UserAttributes = ({ user: defaultUser }: UserAttributesProps) => {\n  const { t } = useTranslation(\"users\");\n  const { addAlert, addError } = useAlerts();\n  const [user, setUser] = useState(defaultUser);\n  const form = useForm({ mode: \"onChange\" });\n  const { config } = useUserProfile();\n\n  const convertAttributes = () => {\n    return arrayToKeyValue(user.attributes!);\n  };\n\n  useEffect(() => {\n    form.setValue(\"attributes\", convertAttributes());\n  }, [user, config]);\n\n  const save = async (attributeForm: AttributeForm) => {\n    try {\n      const attributes = keyValueToArray(attributeForm.attributes!);\n      await adminClient.users.update({ id: user.id! }, { ...user, attributes });\n\n      setUser({ ...user, attributes });\n      addAlert(t(\"userSaved\"), AlertVariant.success);\n    } catch (error) {\n      addError(\"groups:groupUpdateError\", error);\n    }\n  };\n\n  return (\n    \n      \n          form.reset({\n            attributes: convertAttributes(),\n          })\n        }\n      />\n    \n  );\n};\n","import type UserConsentRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userConsentRepresentation\";\nimport {\n  AlertVariant,\n  ButtonVariant,\n  Chip,\n  ChipGroup,\n} from \"@patternfly/react-core\";\nimport { CubesIcon } from \"@patternfly/react-icons\";\nimport { cellWidth } from \"@patternfly/react-table\";\nimport { sortBy } from \"lodash-es\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../components/confirm-dialog/ConfirmDialog\";\nimport { ListEmptyState } from \"../components/list-empty-state/ListEmptyState\";\nimport {\n  Action,\n  KeycloakDataTable,\n} from \"../components/table-toolbar/KeycloakDataTable\";\nimport { emptyFormatter } from \"../util\";\nimport useFormatDate from \"../utils/useFormatDate\";\nimport { useParams } from \"../utils/useParams\";\n\nexport const UserConsents = () => {\n  const [selectedClient, setSelectedClient] =\n    useState();\n  const { t } = useTranslation(\"roles\");\n  const { addAlert, addError } = useAlerts();\n  const formatDate = useFormatDate();\n  const [key, setKey] = useState(0);\n\n  const { id } = useParams<{ id: string }>();\n  const alphabetize = (consentsList: UserConsentRepresentation[]) => {\n    return sortBy(consentsList, (client) => client.clientId?.toUpperCase());\n  };\n\n  const refresh = () => setKey(new Date().getTime());\n\n  const loader = async () => {\n    const getConsents = await adminClient.users.listConsents({ id });\n\n    return alphabetize(getConsents);\n  };\n\n  const clientScopesRenderer = ({\n    grantedClientScopes,\n  }: UserConsentRepresentation) => {\n    return (\n      \n        {grantedClientScopes!.map((currentChip) => (\n          \n            {currentChip}\n          \n        ))}\n      \n    );\n  };\n\n  const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n    titleKey: \"users:revokeClientScopesTitle\",\n    messageKey: t(\"users:revokeClientScopes\", {\n      clientId: selectedClient?.clientId,\n    }),\n    continueButtonLabel: \"common:revoke\",\n    continueButtonVariant: ButtonVariant.danger,\n    onConfirm: async () => {\n      try {\n        await adminClient.users.revokeConsent({\n          id,\n          clientId: selectedClient!.clientId!,\n        });\n\n        refresh();\n\n        addAlert(t(\"deleteGrantsSuccess\"), AlertVariant.success);\n      } catch (error) {\n        addError(\"roles:deleteGrantsError\", error);\n      }\n    },\n  });\n\n  return (\n    <>\n      \n      \n              createDate ? formatDate(new Date(createDate)) : \"—\",\n          },\n          {\n            name: \"lastUpdatedDate\",\n            displayKey: \"clients:lastUpdated\",\n            transforms: [cellWidth(10)],\n            cellRenderer: ({ lastUpdatedDate }) =>\n              lastUpdatedDate ? formatDate(new Date(lastUpdatedDate)) : \"—\",\n          },\n        ]}\n        actions={[\n          {\n            title: t(\"users:revoke\"),\n            onRowClick: (client) => {\n              setSelectedClient(client);\n              toggleDeleteDialog();\n            },\n          } as Action,\n        ]}\n        emptyState={\n          \n        }\n      />\n    \n  );\n};\n","import { useTranslation } from \"react-i18next\";\nimport { Modal, ModalVariant } from \"@patternfly/react-core\";\nimport {\n  Table,\n  TableBody,\n  TableHeader,\n  TableVariant,\n} from \"@patternfly/react-table\";\n\ntype CredentialDataDialogProps = {\n  credentialData: [string, string][];\n  onClose: () => void;\n};\n\nexport const CredentialDataDialog = ({\n  credentialData,\n  onClose,\n}: CredentialDataDialogProps) => {\n  const { t } = useTranslation(\"users\");\n  return (\n    \n      \n        \n        \n      \n    \n  );\n};\n","import { ReactNode, useMemo } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Td } from \"@patternfly/react-table\";\nimport {\n  Button,\n  Dropdown,\n  DropdownPosition,\n  KebabToggle,\n  DropdownItem,\n} from \"@patternfly/react-core\";\n\nimport type CredentialRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/credentialRepresentation\";\nimport useToggle from \"../../utils/useToggle\";\nimport useLocaleSort from \"../../utils/useLocaleSort\";\nimport { CredentialDataDialog } from \"./CredentialDataDialog\";\n\ntype CredentialRowProps = {\n  credential: CredentialRepresentation;\n  resetPassword: () => void;\n  toggleDelete: () => void;\n  children: ReactNode;\n};\n\nexport const CredentialRow = ({\n  credential,\n  resetPassword,\n  toggleDelete,\n  children,\n}: CredentialRowProps) => {\n  const { t } = useTranslation(\"users\");\n  const [showData, toggleShow] = useToggle();\n  const [kebabOpen, toggleKebab] = useToggle();\n  const localeSort = useLocaleSort();\n\n  const rows = useMemo(() => {\n    if (!credential.credentialData) {\n      return [];\n    }\n\n    const credentialData: Record = JSON.parse(\n      credential.credentialData\n    );\n    return localeSort(Object.entries(credentialData), ([key]) => key).map<\n      [string, string]\n    >(([key, value]) => {\n      if (typeof value === \"string\") {\n        return [key, value];\n      }\n\n      return [key, JSON.stringify(value)];\n    });\n  }, [credential.credentialData]);\n\n  return (\n    <>\n      {showData && Object.keys(credential).length !== 0 && (\n         {\n            toggleShow();\n          }}\n        />\n      )}\n\n      {children}\n      \n        \n          {t(\"showDataBtn\")}\n        \n      \n      {credential.type === \"password\" ? (\n        \n          \n            {t(\"resetPasswordBtn\")}\n          \n        \n      ) : (\n        \n      )}\n      \n        }\n          isOpen={kebabOpen}\n          dropdownItems={[\n             {\n                toggleDelete();\n                toggleKebab();\n              }}\n            >\n              {t(\"deleteBtn\")}\n            ,\n          ]}\n        />\n      \n    \n  );\n};\n","import type CredentialRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/credentialRepresentation\";\nimport { AlertVariant, Button, Form, FormGroup } from \"@patternfly/react-core\";\nimport { CheckIcon, PencilAltIcon, TimesIcon } from \"@patternfly/react-icons\";\nimport { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { KeycloakTextInput } from \"../../components/keycloak-text-input/KeycloakTextInput\";\n\ntype UserLabelForm = {\n  userLabel: string;\n};\n\ntype InlineLabelEditProps = {\n  userId: string;\n  credential: CredentialRepresentation;\n  isEditable: boolean;\n  toggle: () => void;\n};\n\nexport const InlineLabelEdit = ({\n  userId,\n  credential,\n  isEditable,\n  toggle,\n}: InlineLabelEditProps) => {\n  const { t } = useTranslation(\"users\");\n  const { register, handleSubmit } = useForm();\n\n  const { addAlert, addError } = useAlerts();\n\n  const saveUserLabel = async (userLabel: UserLabelForm) => {\n    try {\n      await adminClient.users.updateCredentialLabel(\n        {\n          id: userId,\n          credentialId: credential.id!,\n        },\n        userLabel.userLabel || \"\"\n      );\n      addAlert(t(\"updateCredentialUserLabelSuccess\"), AlertVariant.success);\n      toggle();\n    } catch (error) {\n      addError(\"users:updateCredentialUserLabelError\", error);\n    }\n  };\n\n  return (\n    \n      \n        
\n {isEditable ? (\n <>\n \n
\n }\n />\n }\n />\n
\n \n ) : (\n <>\n {credential.userLabel}\n }\n />\n \n )}\n
\n
\n \n );\n};\n","import { FormGroup } from \"@patternfly/react-core\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { HelpItem } from \"ui-shared\";\nimport { TimeSelector } from \"../../components/time-selector/TimeSelector\";\nimport { credResetFormDefaultValues } from \"./ResetCredentialDialog\";\n\nexport const LifespanField = () => {\n const { t } = useTranslation(\"users\");\n const { control } = useFormContext();\n\n return (\n \n }\n >\n (\n \n )}\n />\n \n );\n};\n","import type { RequiredActionAlias } from \"@keycloak/keycloak-admin-client/lib/defs/requiredActionProviderRepresentation\";\nimport { AlertVariant, Form, ModalVariant } from \"@patternfly/react-core\";\nimport { isEmpty } from \"lodash-es\";\nimport { FormProvider, useForm, useWatch } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { ConfirmDialogModal } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { LifespanField } from \"./LifespanField\";\nimport { RequiredActionMultiSelect } from \"./RequiredActionMultiSelect\";\n\ntype ResetCredentialDialogProps = {\n userId: string;\n onClose: () => void;\n};\n\ntype CredentialResetForm = {\n actions: RequiredActionAlias[];\n lifespan: number;\n};\n\nexport const credResetFormDefaultValues: CredentialResetForm = {\n actions: [],\n lifespan: 43200, // 12 hours\n};\n\nexport const ResetCredentialDialog = ({\n userId,\n onClose,\n}: ResetCredentialDialogProps) => {\n const { t } = useTranslation(\"users\");\n const form = useForm({\n defaultValues: credResetFormDefaultValues,\n });\n const { handleSubmit, control } = form;\n\n const resetActionWatcher = useWatch({\n control,\n name: \"actions\",\n });\n const resetIsNotDisabled = !isEmpty(resetActionWatcher);\n\n const { addAlert, addError } = useAlerts();\n\n const sendCredentialsResetEmail = async ({\n actions,\n lifespan,\n }: CredentialResetForm) => {\n if (isEmpty(actions)) {\n return;\n }\n\n try {\n await adminClient.users.executeActionsEmail({\n id: userId,\n actions,\n lifespan,\n });\n addAlert(t(\"credentialResetEmailSuccess\"), AlertVariant.success);\n onClose();\n } catch (error) {\n addError(\"users:credentialResetEmailError\", error);\n }\n };\n\n return (\n {\n handleSubmit(sendCredentialsResetEmail)();\n }}\n confirmButtonDisabled={!resetIsNotDisabled}\n >\n \n \n \n \n \n \n \n );\n};\n","import type UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport {\n AlertVariant,\n ButtonVariant,\n Form,\n FormGroup,\n Switch,\n ValidatedOptions,\n} from \"@patternfly/react-core\";\nimport { Controller, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport {\n ConfirmDialogModal,\n useConfirmDialog,\n} from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { PasswordInput } from \"../../components/password-input/PasswordInput\";\nimport useToggle from \"../../utils/useToggle\";\n\ntype ResetPasswordDialogProps = {\n user: UserRepresentation;\n isResetPassword: boolean;\n refresh: () => void;\n onClose: () => void;\n};\n\nexport type CredentialsForm = {\n password: string;\n passwordConfirmation: string;\n temporaryPassword: boolean;\n};\n\nconst credFormDefaultValues: CredentialsForm = {\n password: \"\",\n passwordConfirmation: \"\",\n temporaryPassword: true,\n};\n\nexport const ResetPasswordDialog = ({\n user,\n isResetPassword,\n refresh,\n onClose,\n}: ResetPasswordDialogProps) => {\n const { t } = useTranslation(\"users\");\n const {\n register,\n control,\n formState: { isValid, errors },\n watch,\n handleSubmit,\n clearErrors,\n setError,\n } = useForm({\n defaultValues: credFormDefaultValues,\n mode: \"onChange\",\n });\n\n const [confirm, toggle] = useToggle(true);\n const password = watch(\"password\", \"\");\n const passwordConfirmation = watch(\"passwordConfirmation\", \"\");\n\n const { addAlert, addError } = useAlerts();\n\n const [toggleConfirmSaveModal, ConfirmSaveModal] = useConfirmDialog({\n titleKey: isResetPassword\n ? \"users:resetPasswordConfirm\"\n : \"users:setPasswordConfirm\",\n messageKey: isResetPassword\n ? t(\"resetPasswordConfirmText\", { username: user.username })\n : t(\"setPasswordConfirmText\", { username: user.username }),\n continueButtonLabel: isResetPassword\n ? \"users:resetPassword\"\n : \"users:savePassword\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: () => handleSubmit(saveUserPassword)(),\n });\n\n const saveUserPassword = async ({\n password,\n temporaryPassword,\n }: CredentialsForm) => {\n try {\n await adminClient.users.resetPassword({\n id: user.id!,\n credential: {\n temporary: temporaryPassword,\n type: \"password\",\n value: password,\n },\n });\n const credentials = await adminClient.users.getCredentials({\n id: user.id!,\n });\n const credentialLabel = credentials.find((c) => c.type === \"password\");\n if (credentialLabel) {\n await adminClient.users.updateCredentialLabel(\n {\n id: user.id!,\n credentialId: credentialLabel.id!,\n },\n t(\"defaultPasswordLabel\")\n );\n }\n addAlert(\n isResetPassword\n ? t(\"resetCredentialsSuccess\")\n : t(\"savePasswordSuccess\"),\n AlertVariant.success\n );\n refresh();\n } catch (error) {\n addError(\n isResetPassword\n ? \"users:resetPasswordError\"\n : \"users:savePasswordError\",\n error\n );\n }\n\n onClose();\n };\n\n const { onChange, ...rest } = register(\"password\", { required: true });\n return (\n <>\n \n \n \n \n {\n onChange(e);\n if (passwordConfirmation !== e.currentTarget.value) {\n setError(\"passwordConfirmation\", {\n message: t(\"confirmPasswordDoesNotMatch\").toString(),\n });\n } else {\n clearErrors(\"passwordConfirmation\");\n }\n }}\n {...rest}\n />\n \n \n \n value === password ||\n t(\"confirmPasswordDoesNotMatch\").toString(),\n })}\n />\n \n \n }\n fieldId=\"kc-temporaryPassword\"\n >\n (\n \n )}\n />\n \n \n \n \n );\n};\n","import type CredentialRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/credentialRepresentation\";\nimport type UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport {\n AlertVariant,\n Button,\n ButtonVariant,\n Divider,\n PageSection,\n PageSectionVariants,\n} from \"@patternfly/react-core\";\nimport styles from \"@patternfly/react-styles/css/components/Table/table\";\nimport {\n TableComposable,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n} from \"@patternfly/react-table\";\nimport {\n Fragment,\n DragEvent as ReactDragEvent,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../components/confirm-dialog/ConfirmDialog\";\nimport { KeycloakSpinner } from \"../components/keycloak-spinner/KeycloakSpinner\";\nimport { ListEmptyState } from \"../components/list-empty-state/ListEmptyState\";\nimport { toUpperCase } from \"../util\";\nimport { useFetch } from \"../utils/useFetch\";\nimport { FederatedUserLink } from \"./FederatedUserLink\";\nimport { CredentialRow } from \"./user-credentials/CredentialRow\";\nimport { InlineLabelEdit } from \"./user-credentials/InlineLabelEdit\";\nimport { ResetCredentialDialog } from \"./user-credentials/ResetCredentialDialog\";\nimport { ResetPasswordDialog } from \"./user-credentials/ResetPasswordDialog\";\n\nimport \"./user-credentials.css\";\n\ntype UserCredentialsProps = {\n user: UserRepresentation;\n};\n\ntype ExpandableCredentialRepresentation = {\n key: string;\n value: CredentialRepresentation[];\n isExpanded: boolean;\n};\n\nexport const UserCredentials = ({ user }: UserCredentialsProps) => {\n const { t } = useTranslation(\"users\");\n const { addAlert, addError } = useAlerts();\n const [key, setKey] = useState(0);\n const refresh = () => setKey(key + 1);\n const [isOpen, setIsOpen] = useState(false);\n const [openCredentialReset, setOpenCredentialReset] = useState(false);\n const [userCredentials, setUserCredentials] = useState<\n CredentialRepresentation[]\n >([]);\n const [groupedUserCredentials, setGroupedUserCredentials] = useState<\n ExpandableCredentialRepresentation[]\n >([]);\n const [selectedCredential, setSelectedCredential] =\n useState({});\n const [isResetPassword, setIsResetPassword] = useState(false);\n const [isUserLabelEdit, setIsUserLabelEdit] = useState<{\n status: boolean;\n rowKey: string;\n }>();\n\n const bodyRef = useRef(null);\n const [state, setState] = useState({\n draggedItemId: \"\",\n draggingToItemIndex: -1,\n dragging: false,\n tempItemOrder: [\"\"],\n });\n\n useFetch(\n () => adminClient.users.getCredentials({ id: user.id! }),\n (credentials) => {\n setUserCredentials(credentials);\n\n const groupedCredentials = credentials.reduce((r, a) => {\n r[a.type!] = r[a.type!] || [];\n r[a.type!].push(a);\n return r;\n }, Object.create(null));\n\n const groupedCredentialsArray = Object.keys(groupedCredentials).map(\n (key) => ({ key, value: groupedCredentials[key] })\n );\n\n setGroupedUserCredentials(\n groupedCredentialsArray.map((groupedCredential) => ({\n ...groupedCredential,\n isExpanded: false,\n }))\n );\n },\n [key]\n );\n\n const passwordTypeFinder = userCredentials.find(\n (credential) => credential.type === \"password\"\n );\n\n const toggleModal = () => setIsOpen(!isOpen);\n\n const toggleCredentialsResetModal = () => {\n setOpenCredentialReset(!openCredentialReset);\n };\n\n const resetPassword = () => {\n setIsResetPassword(true);\n toggleModal();\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: t(\"deleteCredentialsConfirmTitle\"),\n messageKey: t(\"deleteCredentialsConfirm\"),\n continueButtonLabel: t(\"common:delete\"),\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n await adminClient.users.deleteCredential({\n id: user.id!,\n credentialId: selectedCredential.id!,\n });\n addAlert(t(\"deleteCredentialsSuccess\"), AlertVariant.success);\n setKey((key) => key + 1);\n } catch (error) {\n addError(\"users:deleteCredentialsError\", error);\n }\n },\n });\n\n const Row = ({ credential }: { credential: CredentialRepresentation }) => (\n {\n setSelectedCredential(credential);\n toggleDeleteDialog();\n }}\n resetPassword={resetPassword}\n >\n {\n setIsUserLabelEdit({\n status: !isUserLabelEdit?.status,\n rowKey: credential.id!,\n });\n if (isUserLabelEdit?.status) {\n refresh();\n }\n }}\n />\n \n );\n\n const itemOrder = useMemo(\n () =>\n groupedUserCredentials.flatMap((groupedCredential) => [\n groupedCredential.value.map(({ id }) => id).toString(),\n ...(groupedCredential.isExpanded\n ? groupedCredential.value.map((c) => c.id!)\n : []),\n ]),\n [groupedUserCredentials]\n );\n\n const onDragStart = (evt: ReactDragEvent) => {\n evt.dataTransfer.effectAllowed = \"move\";\n evt.dataTransfer.setData(\"text/plain\", evt.currentTarget.id);\n const draggedItemId = evt.currentTarget.id;\n evt.currentTarget.classList.add(styles.modifiers.ghostRow);\n evt.currentTarget.setAttribute(\"aria-pressed\", \"true\");\n setState({ ...state, draggedItemId, dragging: true });\n };\n\n const moveItem = (items: string[], targetItem: string, toIndex: number) => {\n const fromIndex = items.indexOf(targetItem);\n if (fromIndex === toIndex) {\n return items;\n }\n const result = [...items];\n result.splice(toIndex, 0, result.splice(fromIndex, 1)[0]);\n return result;\n };\n\n const move = (itemOrder: string[]) => {\n if (!bodyRef.current) return;\n const ulNode = bodyRef.current;\n const nodes = Array.from(ulNode.children);\n if (nodes.every(({ id }, i) => id === itemOrder[i])) {\n return;\n }\n ulNode.replaceChildren();\n itemOrder.forEach((itemId) => {\n ulNode.appendChild(nodes.find(({ id }) => id === itemId)!);\n });\n };\n\n const onDragCancel = () => {\n if (!bodyRef.current) return;\n Array.from(bodyRef.current.children).forEach((el) => {\n el.classList.remove(styles.modifiers.ghostRow);\n el.setAttribute(\"aria-pressed\", \"false\");\n });\n setState({\n ...state,\n draggedItemId: \"\",\n draggingToItemIndex: -1,\n dragging: false,\n });\n };\n\n const onDragLeave = (evt: ReactDragEvent) => {\n if (!isValidDrop(evt)) {\n move(itemOrder);\n setState({ ...state, draggingToItemIndex: -1 });\n }\n };\n\n const isValidDrop = (evt: ReactDragEvent) => {\n if (!bodyRef.current) return false;\n const ulRect = bodyRef.current.getBoundingClientRect();\n return (\n evt.clientX > ulRect.x &&\n evt.clientX < ulRect.x + ulRect.width &&\n evt.clientY > ulRect.y &&\n evt.clientY < ulRect.y + ulRect.height\n );\n };\n\n const onDrop = (evt: ReactDragEvent) => {\n if (isValidDrop(evt)) {\n onDragFinish(state.draggedItemId, state.tempItemOrder);\n } else {\n onDragCancel();\n }\n };\n\n const onDragOver = (evt: ReactDragEvent) => {\n evt.preventDefault();\n const td = evt.target as HTMLTableCellElement;\n const curListItem = td.closest(\"tr\");\n if (\n !curListItem ||\n (bodyRef.current && !bodyRef.current.contains(curListItem)) ||\n curListItem.id === state.draggedItemId\n ) {\n return;\n } else {\n const dragId = curListItem.id;\n const draggingToItemIndex = Array.from(\n bodyRef.current?.children || []\n ).findIndex((item) => item.id === dragId);\n if (draggingToItemIndex === state.draggingToItemIndex) {\n return;\n }\n const tempItemOrder = moveItem(\n itemOrder,\n state.draggedItemId,\n draggingToItemIndex\n );\n move(tempItemOrder);\n setState({\n ...state,\n draggingToItemIndex,\n tempItemOrder,\n });\n }\n };\n\n const onDragEnd = ({ target }: ReactDragEvent) => {\n if (!(target instanceof HTMLTableRowElement)) {\n return;\n }\n target.classList.remove(styles.modifiers.ghostRow);\n target.setAttribute(\"aria-pressed\", \"false\");\n setState({\n ...state,\n draggedItemId: \"\",\n draggingToItemIndex: -1,\n dragging: false,\n });\n };\n\n const onDragFinish = async (dragged: string, newOrder: string[]) => {\n const oldIndex = itemOrder.findIndex((key) => key === dragged);\n const newIndex = newOrder.findIndex((key) => key === dragged);\n const times = newIndex - oldIndex;\n\n const ids = dragged.split(\",\");\n\n try {\n for (const id of ids)\n for (let index = 0; index < Math.abs(times); index++) {\n if (times > 0) {\n await adminClient.users.moveCredentialPositionDown({\n id: user.id!,\n credentialId: id,\n newPreviousCredentialId: itemOrder[newIndex],\n });\n } else {\n await adminClient.users.moveCredentialPositionUp({\n id: user.id!,\n credentialId: id,\n });\n }\n }\n\n refresh();\n addAlert(t(\"users:updatedCredentialMoveSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"users:updatedCredentialMoveError\", error);\n }\n };\n\n const useFederatedCredentials = user.federationLink || user.origin;\n const [credentialTypes, setCredentialTypes] = useState([]);\n\n useFetch(\n () => adminClient.users.getUserStorageCredentialTypes({ id: user.id! }),\n setCredentialTypes,\n []\n );\n\n if (!credentialTypes) {\n return ;\n }\n\n const hasCredentialTypes = credentialTypes.length > 0;\n const noCredentials = groupedUserCredentials.length === 0;\n const noFederatedCredentials =\n !user.credentials || user.credentials.length === 0;\n const emptyState =\n noCredentials && noFederatedCredentials && !hasCredentialTypes;\n\n return (\n <>\n {isOpen && (\n setIsOpen(false)}\n />\n )}\n {openCredentialReset && (\n setOpenCredentialReset(false)}\n />\n )}\n \n {user.email && !emptyState && (\n setOpenCredentialReset(true)}\n >\n {t(\"credentialResetBtn\")}\n \n )}\n {userCredentials.length !== 0 && passwordTypeFinder === undefined && (\n <>\n {\n setIsOpen(true);\n }}\n >\n {t(\"setPassword\")}\n \n \n \n )}\n {groupedUserCredentials.length !== 0 && (\n \n \n \n \n \n \n \n \n {t(\"type\")}\n {t(\"userLabel\")}\n {t(\"data\")}\n \n \n \n \n \n {groupedUserCredentials.map((groupedCredential, rowIndex) => (\n \n id).toString()}\n draggable={groupedUserCredentials.length > 1}\n onDrop={onDrop}\n onDragEnd={onDragEnd}\n onDragStart={onDragStart}\n >\n id\n )}`,\n }}\n />\n {groupedCredential.value.length > 1 ? (\n {\n const rows = groupedUserCredentials.map(\n (credential, index) =>\n index === rowIndex\n ? {\n ...credential,\n isExpanded: !credential.isExpanded,\n }\n : credential\n );\n setGroupedUserCredentials(rows);\n },\n }}\n />\n ) : (\n \n )}\n \n {toUpperCase(groupedCredential.key)}\n \n {groupedCredential.value.length <= 1 &&\n groupedCredential.value.map((credential) => (\n \n ))}\n \n {groupedCredential.isExpanded &&\n groupedCredential.value.map((credential) => (\n \n \n id\n )}`,\n }}\n />\n \n {toUpperCase(credential.type!)}\n \n \n \n ))}\n \n ))}\n \n \n \n )}\n {useFederatedCredentials && hasCredentialTypes && (\n \n \n \n \n {t(\"type\")}\n {t(\"providedBy\")}\n \n \n \n \n {credentialTypes.map((credential) => (\n \n \n {credential}\n \n \n \n \n {credential === \"password\" && (\n \n \n \n )}\n \n ))}\n \n \n \n )}\n {emptyState && (\n \n )}\n \n );\n};\n","import type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport type UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport {\n AlertVariant,\n Button,\n ButtonVariant,\n Checkbox,\n Popover,\n} from \"@patternfly/react-core\";\nimport { QuestionCircleIcon } from \"@patternfly/react-icons\";\nimport { cellWidth } from \"@patternfly/react-table\";\nimport { intersectionBy, sortBy, uniqBy } from \"lodash-es\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { useHelp } from \"ui-shared\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../components/confirm-dialog/ConfirmDialog\";\nimport { GroupPath } from \"../components/group/GroupPath\";\nimport { GroupPickerDialog } from \"../components/group/GroupPickerDialog\";\nimport { ListEmptyState } from \"../components/list-empty-state/ListEmptyState\";\nimport { KeycloakDataTable } from \"../components/table-toolbar/KeycloakDataTable\";\nimport { useAccess } from \"../context/access/Access\";\nimport { emptyFormatter } from \"../util\";\n\ntype UserGroupsProps = {\n user: UserRepresentation;\n};\n\nexport const UserGroups = ({ user }: UserGroupsProps) => {\n const { t } = useTranslation(\"users\");\n const { addAlert, addError } = useAlerts();\n const [key, setKey] = useState(0);\n const refresh = () => setKey(key + 1);\n\n const [selectedGroups, setSelectedGroups] = useState(\n []\n );\n\n const [isDirectMembership, setDirectMembership] = useState(true);\n const [directMembershipList, setDirectMembershipList] = useState<\n GroupRepresentation[]\n >([]);\n const [open, setOpen] = useState(false);\n\n const { enabled } = useHelp();\n\n const { hasAccess } = useAccess();\n const isManager = hasAccess(\"manage-users\");\n\n const alphabetize = (groupsList: GroupRepresentation[]) => {\n return sortBy(groupsList, (group) => group.path?.toUpperCase());\n };\n\n const loader = async (first?: number, max?: number, search?: string) => {\n const params: { [name: string]: string | number } = {\n first: first!,\n max: max!,\n };\n\n const searchParam = search || \"\";\n if (searchParam) {\n params.search = searchParam;\n }\n\n const joinedUserGroups = await adminClient.users.listGroups({\n ...params,\n id: user.id!,\n });\n\n setDirectMembershipList([...joinedUserGroups]);\n\n const indirect: GroupRepresentation[] = [];\n if (!isDirectMembership)\n joinedUserGroups.forEach((g) => {\n const paths = g.path?.substring(1).split(\"/\").slice(0, -1) || [];\n indirect.push(\n ...paths.map((p) => ({\n name: p,\n path: g.path?.substring(0, g.path.indexOf(p) + p.length),\n }))\n );\n });\n\n return alphabetize(uniqBy([...joinedUserGroups, ...indirect], \"path\"));\n };\n\n const toggleModal = () => {\n setOpen(!open);\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: t(\"leaveGroup\", {\n count: selectedGroups.length,\n name: selectedGroups[0]?.name,\n }),\n messageKey: t(\"leaveGroupConfirmDialog\", {\n count: selectedGroups.length,\n groupname: selectedGroups[0]?.name,\n username: user.username,\n }),\n continueButtonLabel: \"leave\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n await Promise.all(\n selectedGroups.map((group) =>\n adminClient.users.delFromGroup({\n id: user.id!,\n groupId: group.id!,\n })\n )\n );\n\n addAlert(t(\"removedGroupMembership\"), AlertVariant.success);\n } catch (error) {\n addError(\"users:removedGroupMembershipError\", error);\n }\n refresh();\n },\n });\n\n const leave = (group: GroupRepresentation[]) => {\n setSelectedGroups(group);\n toggleDeleteDialog();\n };\n\n const addGroups = async (groups: GroupRepresentation[]): Promise => {\n try {\n await Promise.all(\n groups.map((group) =>\n adminClient.users.addToGroup({\n id: user.id!,\n groupId: group.id!,\n })\n )\n );\n\n addAlert(t(\"addedGroupMembership\"), AlertVariant.success);\n } catch (error) {\n addError(\"users:addedGroupMembershipError\", error);\n }\n refresh();\n };\n\n return (\n <>\n \n {open && (\n setOpen(false)}\n onConfirm={async (groups = []) => {\n await addGroups(groups);\n setOpen(false);\n }}\n />\n )}\n \n isDirectMembership\n ? setSelectedGroups(groups)\n : setSelectedGroups(\n intersectionBy(groups, directMembershipList, \"id\")\n )\n }\n isRowDisabled={(group) =>\n !isDirectMembership &&\n directMembershipList.every((item) => item.id !== group.id)\n }\n toolbarItem={\n <>\n \n {t(\"joinGroup\")}\n \n {\n setDirectMembership(!isDirectMembership);\n refresh();\n }}\n isChecked={isDirectMembership}\n className=\"direct-membership-check\"\n />\n leave(selectedGroups)}\n data-testid=\"leave-group-button\"\n variant=\"link\"\n isDisabled={selectedGroups.length === 0}\n >\n {t(\"leave\")}\n \n\n {enabled && (\n {t(\"whoWillAppearPopoverText\")}
}\n >\n }\n >\n {t(\"whoWillAppearLinkText\")}\n \n \n )}\n \n }\n columns={[\n {\n name: \"groupMembership\",\n displayKey: \"users:groupMembership\",\n cellRenderer: (group: GroupRepresentation) => group.name || \"\",\n cellFormatters: [emptyFormatter()],\n transforms: [cellWidth(40)],\n },\n {\n name: \"path\",\n displayKey: \"users:path\",\n cellRenderer: (group: GroupRepresentation) => (\n \n ),\n transforms: [cellWidth(45)],\n },\n\n {\n name: \"\",\n cellRenderer: (group: GroupRepresentation) => {\n const canLeaveGroup =\n directMembershipList.some((item) => item.id === group.id) ||\n directMembershipList.length === 0 ||\n isDirectMembership;\n return canLeaveGroup ? (\n leave([group])}\n variant=\"link\"\n isDisabled={!user.access?.manageGroupMembership}\n >\n {t(\"leave\")}\n \n ) : (\n \"\"\n );\n },\n cellFormatters: [emptyFormatter()],\n transforms: [cellWidth(20)],\n },\n ]}\n emptyState={\n \n }\n />\n \n );\n};\n","import type FederatedIdentityRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/federatedIdentityRepresentation\";\nimport {\n AlertVariant,\n Button,\n ButtonVariant,\n Form,\n FormGroup,\n Modal,\n ModalVariant,\n ValidatedOptions,\n} from \"@patternfly/react-core\";\nimport { capitalize } from \"lodash-es\";\nimport { useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { KeycloakTextInput } from \"../components/keycloak-text-input/KeycloakTextInput\";\n\ntype UserIdpModalProps = {\n userId: string;\n federatedId: string;\n onClose: () => void;\n onRefresh: () => void;\n};\n\nexport const UserIdpModal = ({\n userId,\n federatedId,\n onClose,\n onRefresh,\n}: UserIdpModalProps) => {\n const { t } = useTranslation(\"users\");\n const { addAlert, addError } = useAlerts();\n const {\n register,\n handleSubmit,\n formState: { isValid, errors },\n } = useForm({\n mode: \"onChange\",\n });\n\n const onSubmit = async (\n federatedIdentity: FederatedIdentityRepresentation\n ) => {\n try {\n await adminClient.users.addToFederatedIdentity({\n id: userId,\n federatedIdentityId: federatedId,\n federatedIdentity,\n });\n addAlert(t(\"users:idpLinkSuccess\"), AlertVariant.success);\n onClose();\n onRefresh();\n } catch (error) {\n addError(\"users:couldNotLinkIdP\", error);\n }\n };\n\n return (\n \n {t(\"link\")}\n ,\n \n {t(\"common:cancel\")}\n ,\n ]}\n isOpen\n >\n
\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import type FederatedIdentityRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/federatedIdentityRepresentation\";\nimport type IdentityProviderRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/identityProviderRepresentation\";\nimport {\n AlertVariant,\n Button,\n ButtonVariant,\n Label,\n PageSection,\n Text,\n TextContent,\n} from \"@patternfly/react-core\";\nimport { cellWidth } from \"@patternfly/react-table\";\nimport { capitalize } from \"lodash-es\";\nimport { useState } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../components/confirm-dialog/ConfirmDialog\";\nimport { FormPanel } from \"../components/scroll-form/FormPanel\";\nimport { KeycloakDataTable } from \"../components/table-toolbar/KeycloakDataTable\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { useServerInfo } from \"../context/server-info/ServerInfoProvider\";\nimport { toIdentityProvider } from \"../identity-providers/routes/IdentityProvider\";\nimport { emptyFormatter, upperCaseFormatter } from \"../util\";\nimport { UserIdpModal } from \"./UserIdPModal\";\n\ntype UserIdentityProviderLinksProps = {\n userId: string;\n};\n\nexport const UserIdentityProviderLinks = ({\n userId,\n}: UserIdentityProviderLinksProps) => {\n const [key, setKey] = useState(0);\n const [federatedId, setFederatedId] = useState(\"\");\n const [isLinkIdPModalOpen, setIsLinkIdPModalOpen] = useState(false);\n\n const { realm } = useRealm();\n const { addAlert, addError } = useAlerts();\n const { t } = useTranslation(\"users\");\n\n const refresh = () => setKey(new Date().getTime());\n\n type WithProviderId = FederatedIdentityRepresentation & {\n providerId: string;\n };\n\n const identityProviders = useServerInfo().identityProviders;\n\n const getFederatedIdentities = async () => {\n const allProviders = await adminClient.identityProviders.find();\n\n const allFedIds = (await adminClient.users.listFederatedIdentities({\n id: userId,\n })) as WithProviderId[];\n for (const element of allFedIds) {\n element.providerId = allProviders.find(\n (item) => item.alias === element.identityProvider\n )?.providerId!;\n }\n\n return allFedIds;\n };\n\n const getAvailableIdPs = async () => {\n return (await adminClient.realms.findOne({ realm }))!.identityProviders;\n };\n\n const linkedIdPsLoader = async () => {\n return getFederatedIdentities();\n };\n\n const availableIdPsLoader = async () => {\n const linkedNames = (await getFederatedIdentities()).map(\n (x) => x.identityProvider\n );\n\n return (await getAvailableIdPs())?.filter(\n (item) => !linkedNames.includes(item.alias)\n )!;\n };\n\n const [toggleUnlinkDialog, UnlinkConfirm] = useConfirmDialog({\n titleKey: t(\"users:unlinkAccountTitle\", {\n provider: capitalize(federatedId),\n }),\n messageKey: t(\"users:unlinkAccountConfirm\", {\n provider: capitalize(federatedId),\n }),\n continueButtonLabel: \"users:unlink\",\n continueButtonVariant: ButtonVariant.primary,\n onConfirm: async () => {\n try {\n await adminClient.users.delFromFederatedIdentity({\n id: userId,\n federatedIdentityId: federatedId,\n });\n addAlert(t(\"users:idpUnlinkSuccess\"), AlertVariant.success);\n refresh();\n } catch (error) {\n addError(\"common:mappingDeletedError\", error);\n }\n },\n });\n\n const idpLinkRenderer = (idp: WithProviderId) => {\n return (\n \n {capitalize(idp.identityProvider)}\n \n );\n };\n\n const badgeRenderer1 = (idp: FederatedIdentityRepresentation) => {\n const groupName = identityProviders?.find(\n (provider) => provider[\"id\"] === idp.identityProvider\n )?.groupName!;\n return (\n \n );\n };\n\n const badgeRenderer2 = (idp: IdentityProviderRepresentation) => {\n const groupName = identityProviders?.find(\n (provider) => provider[\"id\"] === idp.providerId\n )?.groupName!;\n return (\n \n );\n };\n\n const unlinkRenderer = (fedIdentity: FederatedIdentityRepresentation) => {\n return (\n {\n setFederatedId(fedIdentity.identityProvider!);\n toggleUnlinkDialog();\n }}\n >\n {t(\"unlinkAccount\")}\n \n );\n };\n\n const linkRenderer = (idp: IdentityProviderRepresentation) => {\n return (\n {\n setFederatedId(idp.alias!);\n setIsLinkIdPModalOpen(true);\n }}\n >\n {t(\"linkAccount\")}\n \n );\n };\n\n return (\n <>\n {isLinkIdPModalOpen && (\n setIsLinkIdPModalOpen(false)}\n onRefresh={refresh}\n />\n )}\n \n \n \n \n \n {t(\"linkedIdPsText\")}\n \n \n \n {t(\"users:noProvidersLinked\")}\n \n }\n />\n \n \n \n \n {t(\"availableIdPsText\")}\n \n \n \n {t(\"users:noAvailableIdentityProviders\")}\n \n }\n />\n \n \n \n );\n};\n","import type { RoleMappingPayload } from \"@keycloak/keycloak-admin-client/lib/defs/roleRepresentation\";\nimport { AlertVariant } from \"@patternfly/react-core\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { RoleMapping, Row } from \"../components/role-mapping/RoleMapping\";\n\ntype UserRoleMappingProps = {\n id: string;\n name: string;\n};\n\nexport const UserRoleMapping = ({ id, name }: UserRoleMappingProps) => {\n const { t } = useTranslation(\"users\");\n const { addAlert, addError } = useAlerts();\n\n const assignRoles = async (rows: Row[]) => {\n try {\n const realmRoles = rows\n .filter((row) => row.client === undefined)\n .map((row) => row.role as RoleMappingPayload)\n .flat();\n await adminClient.users.addRealmRoleMappings({\n id,\n roles: realmRoles,\n });\n await Promise.all(\n rows\n .filter((row) => row.client !== undefined)\n .map((row) =>\n adminClient.users.addClientRoleMappings({\n id,\n clientUniqueId: row.client!.id!,\n roles: [row.role as RoleMappingPayload],\n })\n )\n );\n addAlert(t(\"roleMappingUpdatedSuccess\"), AlertVariant.success);\n } catch (error) {\n addError(\"clients:roleMappingUpdatedError\", error);\n }\n };\n\n return ;\n};\n","import { PageSection } from \"@patternfly/react-core\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport SessionsTable from \"../sessions/SessionsTable\";\nimport { useParams } from \"../utils/useParams\";\nimport type { UserParams } from \"./routes/User\";\n\nexport const UserSessions = () => {\n const { id } = useParams();\n const { realm } = useRealm();\n const { t } = useTranslation(\"sessions\");\n\n const loader = () => adminClient.users.listSessions({ id, realm });\n\n return (\n \n \n \n );\n};\n","import RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport type UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport {\n AlertVariant,\n ButtonVariant,\n DropdownItem,\n PageSection,\n Tab,\n TabTitleText,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate } from \"react-router-dom\";\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../components/confirm-dialog/ConfirmDialog\";\nimport { KeycloakSpinner } from \"../components/keycloak-spinner/KeycloakSpinner\";\nimport {\n RoutableTabs,\n useRoutableTab,\n} from \"../components/routable-tabs/RoutableTabs\";\nimport { ViewHeader } from \"../components/view-header/ViewHeader\";\nimport { useAccess } from \"../context/access/Access\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { UserProfileProvider } from \"../realm-settings/user-profile/UserProfileContext\";\nimport { useFetch } from \"../utils/useFetch\";\nimport useIsFeatureEnabled, { Feature } from \"../utils/useIsFeatureEnabled\";\nimport { useParams } from \"../utils/useParams\";\nimport { useUpdateEffect } from \"../utils/useUpdateEffect\";\nimport { UserAttributes } from \"./UserAttributes\";\nimport { UserConsents } from \"./UserConsents\";\nimport { UserCredentials } from \"./UserCredentials\";\nimport { BruteForced, UserForm } from \"./UserForm\";\nimport { UserGroups } from \"./UserGroups\";\nimport { UserIdentityProviderLinks } from \"./UserIdentityProviderLinks\";\nimport {\n isUserProfileError,\n userProfileErrorToString,\n} from \"./UserProfileFields\";\nimport { UserRoleMapping } from \"./UserRoleMapping\";\nimport { UserSessions } from \"./UserSessions\";\nimport { UserParams, UserTab, toUser } from \"./routes/User\";\nimport { toUsers } from \"./routes/Users\";\n\nimport \"./user-section.css\";\n\nexport default function EditUser() {\n const { realm } = useRealm();\n const { id } = useParams();\n const { t } = useTranslation(\"users\");\n const [user, setUser] = useState();\n const [bruteForced, setBruteForced] = useState();\n const [refreshCount, setRefreshCount] = useState(0);\n const refresh = () => setRefreshCount((count) => count + 1);\n\n useFetch(\n async () => {\n const [user, currentRealm, attackDetection] = await Promise.all([\n adminClient.users.findOne({ id: id! }),\n adminClient.realms.findOne({ realm }),\n adminClient.attackDetection.findOne({ id: id! }),\n ]);\n\n if (!user || !currentRealm || !attackDetection) {\n throw new Error(t(\"common:notFound\"));\n }\n\n const isBruteForceProtected = currentRealm.bruteForceProtected;\n const isLocked = isBruteForceProtected && attackDetection.disabled;\n\n return { user, bruteForced: { isBruteForceProtected, isLocked } };\n },\n ({ user, bruteForced }) => {\n setUser(user);\n setBruteForced(bruteForced);\n },\n [refreshCount]\n );\n\n if (!user || !bruteForced) {\n return ;\n }\n\n return (\n \n );\n}\n\ntype EditUserFormProps = {\n user: UserRepresentation;\n bruteForced: BruteForced;\n refresh: () => void;\n};\n\nconst EditUserForm = ({ user, bruteForced, refresh }: EditUserFormProps) => {\n const { t } = useTranslation(\"users\");\n const { realm } = useRealm();\n const { addAlert, addError } = useAlerts();\n const navigate = useNavigate();\n const { hasAccess } = useAccess();\n const userForm = useForm({\n mode: \"onChange\",\n defaultValues: user,\n });\n\n const [realmRepresentation, setRealmRepresentattion] =\n useState();\n\n useFetch(\n () => adminClient.realms.findOne({ realm }),\n (realm) => {\n if (!realm) {\n throw new Error(t(\"common:notFound\"));\n }\n setRealmRepresentattion(realm);\n },\n []\n );\n\n const isFeatureEnabled = useIsFeatureEnabled();\n const isUserProfileEnabled =\n isFeatureEnabled(Feature.DeclarativeUserProfile) &&\n realmRepresentation?.attributes?.userProfileEnabled === \"true\";\n\n const toTab = (tab: UserTab) =>\n toUser({\n realm,\n id: user.id!,\n tab,\n });\n\n const useTab = (tab: UserTab) => useRoutableTab(toTab(tab));\n\n const settingsTab = useTab(\"settings\");\n const attributesTab = useTab(\"attributes\");\n const credentialsTab = useTab(\"credentials\");\n const roleMappingTab = useTab(\"role-mapping\");\n const groupsTab = useTab(\"groups\");\n const consentsTab = useTab(\"consents\");\n const identityProviderLinksTab = useTab(\"identity-provider-links\");\n const sessionsTab = useTab(\"sessions\");\n\n // Ensure the form remains up-to-date when the user is updated.\n useUpdateEffect(() => userForm.reset(user), [user]);\n\n const save = async (formUser: UserRepresentation) => {\n try {\n await adminClient.users.update(\n { id: user.id! },\n {\n ...formUser,\n username: formUser.username?.trim(),\n attributes: { ...user.attributes, ...formUser.attributes },\n }\n );\n addAlert(t(\"userSaved\"), AlertVariant.success);\n refresh();\n } catch (error) {\n if (isUserProfileError(error)) {\n addError(userProfileErrorToString(error), error);\n } else {\n addError(\"users:userCreateError\", error);\n }\n }\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"users:deleteConfirm\",\n messageKey: \"users:deleteConfirmCurrentUser\",\n continueButtonLabel: \"common:delete\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n await adminClient.users.del({ id: user.id! });\n addAlert(t(\"userDeletedSuccess\"), AlertVariant.success);\n navigate(toUsers({ realm }));\n } catch (error) {\n addError(\"users:userDeletedError\", error);\n }\n },\n });\n\n const [toggleImpersonateDialog, ImpersonateConfirm] = useConfirmDialog({\n titleKey: \"users:impersonateConfirm\",\n messageKey: \"users:impersonateConfirmDialog\",\n continueButtonLabel: \"users:impersonate\",\n onConfirm: async () => {\n try {\n const data = await adminClient.users.impersonation(\n { id: user.id! },\n { user: user.id!, realm }\n );\n if (data.sameRealm) {\n window.location = data.redirect;\n } else {\n window.open(data.redirect, \"_blank\");\n }\n } catch (error) {\n addError(\"users:impersonateError\", error);\n }\n },\n });\n\n return (\n <>\n \n \n toggleImpersonateDialog()}\n >\n {t(\"impersonate\")}\n ,\n toggleDeleteDialog()}\n >\n {t(\"common:delete\")}\n ,\n ]}\n onToggle={(value) => save({ ...user, enabled: value })}\n isEnabled={user.enabled}\n />\n\n \n \n \n \n {t(\"common:details\")}}\n {...settingsTab}\n >\n \n \n \n \n {!isUserProfileEnabled && (\n {t(\"common:attributes\")}}\n {...attributesTab}\n >\n \n \n )}\n {t(\"common:credentials\")}}\n {...credentialsTab}\n >\n \n \n {t(\"roleMapping\")}}\n {...roleMappingTab}\n >\n \n \n {hasAccess(\"query-groups\") && (\n {t(\"common:groups\")}}\n {...groupsTab}\n >\n \n \n )}\n {t(\"consents\")}}\n {...consentsTab}\n >\n \n \n {hasAccess(\"view-identity-providers\") && (\n {t(\"identityProviderLinks\")}\n }\n {...identityProviderLinksTab}\n >\n \n \n )}\n {t(\"sessions\")}}\n {...sessionsTab}\n >\n \n \n \n \n \n \n \n );\n};\n"],"names":["nativeMin","baseIntersection","arrays","iteratee","comparator","includes","arrayIncludesWith","arrayIncludes","length","othLength","othIndex","caches","maxLength","result","array","arrayMap","baseUnary","SetCache","index","seen","outer","value","computed","cacheHas","cache","castArrayLikeObject","isArrayLikeObject","intersectionBy","baseRest","last","mapped","baseIteratee","intersectionBy$1","mapTag","setTag","objectProto","hasOwnProperty","isEmpty","isArrayLike","isArray","isBuffer","isTypedArray","isArguments","tag","getTag","isPrototype","baseKeys","key","UserAttributes","defaultUser","useTranslation","addAlert","addError","useAlerts","user","setUser","useState","form","useForm","config","useUserProfile","convertAttributes","arrayToKeyValue","useEffect","save","attributeForm","attributes","keyValueToArray","adminClient","AlertVariant","error","jsx","PageSection","PageSectionVariants","AttributesForm","UserConsents","selectedClient","setSelectedClient","t","formatDate","useFormatDate","setKey","id","useParams","alphabetize","consentsList","sortBy","client","refresh","loader","getConsents","clientScopesRenderer","grantedClientScopes","ChipGroup","currentChip","Chip","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","ButtonVariant","jsxs","Fragment","KeycloakDataTable","emptyFormatter","cellWidth","createDate","lastUpdatedDate","ListEmptyState","CubesIcon","CredentialDataDialog","credentialData","onClose","Modal","ModalVariant","Table","TableVariant","TableHeader","TableBody","CredentialRow","credential","resetPassword","toggleDelete","children","showData","toggleShow","useToggle","kebabOpen","toggleKebab","localeSort","useLocaleSort","rows","useMemo","Td","Button","Dropdown","DropdownPosition","KebabToggle","DropdownItem","InlineLabelEdit","userId","isEditable","toggle","register","handleSubmit","saveUserLabel","userLabel","Form","FormGroup","KeycloakTextInput","CheckIcon","TimesIcon","PencilAltIcon","LifespanField","control","useFormContext","HelpItem","Controller","credResetFormDefaultValues","field","TimeSelector","ResetCredentialDialog","resetActionWatcher","useWatch","resetIsNotDisabled","sendCredentialsResetEmail","actions","lifespan","ConfirmDialogModal","FormProvider","RequiredActionMultiSelect","credFormDefaultValues","ResetPasswordDialog","isResetPassword","isValid","errors","watch","clearErrors","setError","confirm","password","passwordConfirmation","toggleConfirmSaveModal","ConfirmSaveModal","saveUserPassword","temporaryPassword","credentialLabel","c","onChange","rest","ValidatedOptions","PasswordInput","e","Switch","UserCredentials","isOpen","setIsOpen","openCredentialReset","setOpenCredentialReset","userCredentials","setUserCredentials","groupedUserCredentials","setGroupedUserCredentials","selectedCredential","setSelectedCredential","setIsResetPassword","isUserLabelEdit","setIsUserLabelEdit","bodyRef","useRef","state","setState","useFetch","credentials","groupedCredentials","r","a","groupedCredentialsArray","groupedCredential","passwordTypeFinder","toggleModal","toggleCredentialsResetModal","Row","itemOrder","onDragStart","evt","draggedItemId","styles","moveItem","items","targetItem","toIndex","fromIndex","move","ulNode","nodes","i","itemId","onDragCancel","el","onDragLeave","isValidDrop","ulRect","onDrop","onDragFinish","onDragOver","curListItem","dragId","draggingToItemIndex","item","tempItemOrder","onDragEnd","target","dragged","newOrder","oldIndex","newIndex","times","ids","useFederatedCredentials","credentialTypes","setCredentialTypes","KeycloakSpinner","hasCredentialTypes","noCredentials","noFederatedCredentials","emptyState","Divider","TableComposable","Thead","Tr","Th","Tbody","rowIndex","_","toUpperCase","FederatedUserLink","UserGroups","selectedGroups","setSelectedGroups","isDirectMembership","setDirectMembership","directMembershipList","setDirectMembershipList","open","setOpen","enabled","useHelp","hasAccess","useAccess","isManager","groupsList","group","first","max","search","params","searchParam","joinedUserGroups","indirect","g","paths","p","uniqBy","leave","addGroups","groups","GroupPickerDialog","Checkbox","Popover","QuestionCircleIcon","GroupPath","UserIdpModal","federatedId","onRefresh","onSubmit","federatedIdentity","capitalize","UserIdentityProviderLinks","setFederatedId","isLinkIdPModalOpen","setIsLinkIdPModalOpen","realm","useRealm","identityProviders","useServerInfo","getFederatedIdentities","allProviders","allFedIds","element","getAvailableIdPs","linkedIdPsLoader","availableIdPsLoader","linkedNames","x","toggleUnlinkDialog","UnlinkConfirm","idpLinkRenderer","idp","Link","toIdentityProvider","badgeRenderer1","groupName","provider","Label","badgeRenderer2","unlinkRenderer","fedIdentity","linkRenderer","FormPanel","TextContent","Text","upperCaseFormatter","UserRoleMapping","name","assignRoles","realmRoles","row","RoleMapping","UserSessions","SessionsTable","EditUser","bruteForced","setBruteForced","refreshCount","setRefreshCount","count","currentRealm","attackDetection","isBruteForceProtected","isLocked","EditUserForm","navigate","useNavigate","userForm","realmRepresentation","setRealmRepresentattion","isUserProfileEnabled","useIsFeatureEnabled","Feature","toTab","tab","toUser","useTab","useRoutableTab","settingsTab","attributesTab","credentialsTab","roleMappingTab","groupsTab","consentsTab","identityProviderLinksTab","sessionsTab","useUpdateEffect","formUser","isUserProfileError","userProfileErrorToString","toUsers","toggleImpersonateDialog","ImpersonateConfirm","data","ViewHeader","UserProfileProvider","RoutableTabs","Tab","TabTitleText","UserForm"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy