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

theme.keycloak.v2.admin.resources.assets.UserForm-PSfSn7pK.js.map Maven / Gradle / Ivy

There is a newer version: 26.0.7
Show newest version
{"version":3,"file":"UserForm-PSfSn7pK.js","sources":["../../src/user/FederatedUserLink.tsx","../../src/user/form-state.ts","../../src/user/user-credentials/RequiredActionMultiSelect.tsx","../../src/user/UserForm.tsx"],"sourcesContent":["import type ComponentRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/componentRepresentation\";\nimport type UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport { Button } from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useAccess } from \"../context/access/Access\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { toCustomUserFederation } from \"../user-federation/routes/CustomUserFederation\";\nimport { useFetch } from \"../utils/useFetch\";\n\ntype FederatedUserLinkProps = {\n  user: UserRepresentation;\n};\n\nexport const FederatedUserLink = ({ user }: FederatedUserLinkProps) => {\n  const { adminClient } = useAdminClient();\n\n  const access = useAccess();\n  const { realm } = useRealm();\n\n  const [component, setComponent] = useState();\n\n  useFetch(\n    () =>\n      access.hasAccess(\"view-realm\")\n        ? adminClient.components.findOne({\n            id: (user.federationLink || user.origin)!,\n          })\n        : adminClient.userStorageProvider.name({\n            id: (user.federationLink || user.origin)!,\n          }),\n    setComponent,\n    [],\n  );\n\n  if (!component) return null;\n\n  if (!access.hasAccess(\"view-realm\")) return {component.name};\n\n  return (\n     (\n        \n      )}\n    >\n      {component.name}\n    \n  );\n};\n","import UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport {\n  KeyValueType,\n  arrayToKeyValue,\n  keyValueToArray,\n} from \"../components/key-value-form/key-value-convert\";\nimport { beerify, debeerify } from \"../util\";\n\nexport type UserFormFields = Omit<\n  UIUserRepresentation,\n  \"attributes\" | \"userProfileMetadata\" | \"unmanagedAttributes\"\n> & {\n  attributes?: KeyValueType[] | Record;\n  unmanagedAttributes?: KeyValueType[] | Record;\n};\n\nexport interface UIUserRepresentation extends UserRepresentation {\n  unmanagedAttributes?: Record;\n}\n\nexport function toUserFormFields(data: UIUserRepresentation): UserFormFields {\n  const attributes: Record = {};\n  Object.entries(data.attributes || {}).forEach(\n    ([k, v]) => (attributes[beerify(k)] = v),\n  );\n\n  const unmanagedAttributes = arrayToKeyValue(data.unmanagedAttributes);\n  return { ...data, attributes, unmanagedAttributes };\n}\n\nexport function toUserRepresentation(\n  data: UserFormFields,\n): UIUserRepresentation {\n  const username = data.username?.trim();\n  const attributes = Array.isArray(data.attributes)\n    ? keyValueToArray(data.attributes)\n    : Object.fromEntries(\n        Object.entries(data.attributes || {}).map(([k, v]) => [\n          debeerify(k),\n          v,\n        ]),\n      );\n  const unmanagedAttributes = Array.isArray(data.unmanagedAttributes)\n    ? keyValueToArray(data.unmanagedAttributes)\n    : data.unmanagedAttributes;\n\n  for (const key in unmanagedAttributes) {\n    if (attributes && Object.hasOwn(attributes, key)) {\n      throw Error(\n        `Attribute ${key} is a managed attribute and is already available from the user details.`,\n      );\n    }\n  }\n\n  return {\n    ...data,\n    username,\n    attributes: { ...unmanagedAttributes, ...attributes },\n    unmanagedAttributes: undefined,\n  };\n}\n\nexport function filterManagedAttributes(\n  attributes: Record = {},\n  unmanagedAttributes: Record = {},\n) {\n  return Object.fromEntries(\n    Object.entries(attributes).filter(\n      ([key]) => !Object.hasOwn(unmanagedAttributes, key),\n    ),\n  );\n}\n","import type RequiredActionProviderRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/requiredActionProviderRepresentation\";\nimport { useState } from \"react\";\nimport { FieldPathByValue, FieldValues } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { SelectControl, SelectVariant } from \"@keycloak/keycloak-ui-shared\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { useFetch } from \"../../utils/useFetch\";\n\nexport type RequiredActionMultiSelectProps<\n  T extends FieldValues,\n  P extends FieldPathByValue,\n> = {\n  name: P;\n  label: string;\n  help: string;\n};\n\nexport const RequiredActionMultiSelect = <\n  T extends FieldValues,\n  P extends FieldPathByValue,\n>({\n  name,\n  label,\n  help,\n}: RequiredActionMultiSelectProps) => {\n  const { adminClient } = useAdminClient();\n\n  const { t } = useTranslation();\n  const [requiredActions, setRequiredActions] = useState<\n    RequiredActionProviderRepresentation[]\n  >([]);\n\n  useFetch(\n    () => adminClient.authenticationManagement.getRequiredActions(),\n    (actions) => {\n      const enabledUserActions = actions.filter((action) => {\n        return action.enabled;\n      });\n      setRequiredActions(enabledUserActions);\n    },\n    [],\n  );\n\n  return (\n     ({\n        key: alias!,\n        value: name || alias!,\n      }))}\n    />\n  );\n};\n","import type GroupRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/groupRepresentation\";\nimport type RealmRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/realmRepresentation\";\nimport { UserProfileMetadata } from \"@keycloak/keycloak-admin-client/lib/defs/userProfileMetadata\";\nimport type UserRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/userRepresentation\";\nimport {\n  FormErrorText,\n  FormSubmitButton,\n  HelpItem,\n  SwitchControl,\n  TextControl,\n  UserProfileFields,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n  ActionGroup,\n  AlertVariant,\n  Button,\n  Chip,\n  ChipGroup,\n  FormGroup,\n  InputGroup,\n  InputGroupItem,\n  Switch,\n  TextInput,\n} from \"@patternfly/react-core\";\nimport { TFunction } from \"i18next\";\nimport { useEffect, useState } from \"react\";\nimport { Controller, FormProvider, UseFormReturn } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link } from \"react-router-dom\";\nimport { useAdminClient } from \"../admin-client\";\nimport { DefaultSwitchControl } from \"../components/SwitchControl\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { FormAccess } from \"../components/form/FormAccess\";\nimport { GroupPickerDialog } from \"../components/group/GroupPickerDialog\";\nimport { useAccess } from \"../context/access/Access\";\nimport { useWhoAmI } from \"../context/whoami/WhoAmI\";\nimport { emailRegexPattern } from \"../util\";\nimport useFormatDate from \"../utils/useFormatDate\";\nimport { FederatedUserLink } from \"./FederatedUserLink\";\nimport { UserFormFields, toUserFormFields } from \"./form-state\";\nimport { toUsers } from \"./routes/Users\";\nimport { RequiredActionMultiSelect } from \"./user-credentials/RequiredActionMultiSelect\";\n\nexport type BruteForced = {\n  isBruteForceProtected?: boolean;\n  isLocked?: boolean;\n};\n\nexport type UserFormProps = {\n  form: UseFormReturn;\n  realm: RealmRepresentation;\n  user?: UserRepresentation;\n  bruteForce?: BruteForced;\n  userProfileMetadata?: UserProfileMetadata;\n  save: (user: UserFormFields) => void;\n  onGroupsUpdate?: (groups: GroupRepresentation[]) => void;\n};\n\nexport const UserForm = ({\n  form,\n  realm,\n  user,\n  bruteForce: { isBruteForceProtected, isLocked } = {\n    isBruteForceProtected: false,\n    isLocked: false,\n  },\n  userProfileMetadata,\n  save,\n  onGroupsUpdate,\n}: UserFormProps) => {\n  const { adminClient } = useAdminClient();\n\n  const { t } = useTranslation();\n  const formatDate = useFormatDate();\n  const { addAlert, addError } = useAlerts();\n  const { hasAccess } = useAccess();\n  const isManager = hasAccess(\"manage-users\");\n  const canViewFederationLink = hasAccess(\"view-realm\");\n  const { whoAmI } = useWhoAmI();\n  const currentLocale = whoAmI.getLocale();\n\n  const { handleSubmit, setValue, watch, control, reset, formState } = form;\n  const { errors } = formState;\n\n  const watchUsernameInput = watch(\"username\");\n  const [selectedGroups, setSelectedGroups] = useState(\n    [],\n  );\n  const [open, setOpen] = useState(false);\n  const [locked, setLocked] = useState(isLocked);\n\n  useEffect(() => {\n    setValue(\"requiredActions\", user?.requiredActions || []);\n  }, [user, setValue]);\n\n  const unLockUser = async () => {\n    try {\n      await adminClient.attackDetection.del({ id: user!.id! });\n      addAlert(t(\"unlockSuccess\"), AlertVariant.success);\n    } catch (error) {\n      addError(\"unlockError\", error);\n    }\n  };\n\n  const deleteItem = (id: string) => {\n    setSelectedGroups(selectedGroups.filter((item) => item.name !== id));\n    onGroupsUpdate?.(selectedGroups);\n  };\n\n  const addChips = async (groups: GroupRepresentation[]): Promise => {\n    setSelectedGroups([...selectedGroups!, ...groups]);\n    onGroupsUpdate?.([...selectedGroups!, ...groups]);\n  };\n\n  const addGroups = async (groups: GroupRepresentation[]): Promise => {\n    const newGroups = groups;\n\n    newGroups.forEach(async (group) => {\n      try {\n        await adminClient.users.addToGroup({\n          id: user!.id!,\n          groupId: group.id!,\n        });\n        addAlert(t(\"addedGroupMembership\"), AlertVariant.success);\n      } catch (error) {\n        addError(\"addedGroupMembershipError\", error);\n      }\n    });\n  };\n\n  const toggleModal = () => {\n    setOpen(!open);\n  };\n\n  return (\n    \n      \n        {open && (\n           {\n              user?.id ? addGroups(groups || []) : addChips(groups || []);\n              setOpen(false);\n            }}\n            onClose={() => setOpen(false)}\n            filterGroups={selectedGroups}\n          />\n        )}\n        {user?.id && (\n          <>\n            \n              \n            \n            \n              \n            \n          \n        )}\n        \n        {(user?.federationLink || user?.origin) && canViewFederationLink && (\n          \n            }\n          >\n            \n          \n        )}\n        {userProfileMetadata ? (\n          <>\n            \n            \n                  t(key as string, params as any)) as TFunction\n              }\n            />\n          \n        ) : (\n          <>\n            {!realm.registrationEmailAsUsername && (\n              \n            )}\n            \n            \n            \n            \n          \n        )}\n        {isBruteForceProtected && (\n          \n            }\n          >\n             {\n                unLockUser();\n                setLocked(value);\n                save({\n                  enabled: !value,\n                });\n              }}\n              isChecked={locked}\n              isDisabled={!locked}\n              label={t(\"on\")}\n              labelOff={t(\"off\")}\n            />\n          \n        )}\n        {!user?.id && (\n          \n            }\n          >\n             (\n                \n                  \n                    \n                      {selectedGroups.map((currentChip) => (\n                         deleteItem(currentChip.name!)}\n                        >\n                          {currentChip.path}\n                        \n                      ))}\n                    \n                  \n                  \n                    \n                      {t(\"joinGroups\")}\n                    \n                  \n                \n              )}\n            />\n            {errors.requiredActions && (\n              \n            )}\n          \n        )}\n\n        \n          \n            {user?.id ? t(\"save\") : t(\"create\")}\n          \n           reset(toUserFormFields(user)) : undefined}\n            component={\n              !user?.id\n                ? (props) => (\n                    \n                  )\n                : undefined\n            }\n          >\n            {user?.id ? t(\"revert\") : t(\"cancel\")}\n          \n        \n      \n    \n  );\n};\n"],"names":["FederatedUserLink","user","adminClient","useAdminClient","access","useAccess","realm","useRealm","component","setComponent","useState","useFetch","jsx","Button","props","Link","toCustomUserFederation","toUserFormFields","data","attributes","k","v","beerify","unmanagedAttributes","arrayToKeyValue","toUserRepresentation","username","keyValueToArray","debeerify","key","filterManagedAttributes","RequiredActionMultiSelect","name","label","help","t","useTranslation","requiredActions","setRequiredActions","actions","enabledUserActions","action","SelectControl","SelectVariant","alias","UserForm","form","isBruteForceProtected","isLocked","userProfileMetadata","save","onGroupsUpdate","formatDate","useFormatDate","addAlert","addError","useAlerts","hasAccess","isManager","canViewFederationLink","whoAmI","useWhoAmI","currentLocale","handleSubmit","setValue","watch","control","reset","formState","errors","watchUsernameInput","selectedGroups","setSelectedGroups","open","setOpen","locked","setLocked","useEffect","unLockUser","AlertVariant","error","deleteItem","id","item","addChips","groups","addGroups","group","toggleModal","FormAccess","jsxs","FormProvider","GroupPickerDialog","Fragment","FormGroup","TextInput","HelpItem","DefaultSwitchControl","UserProfileFields","params","TextControl","emailRegexPattern","SwitchControl","Switch","_event","value","Controller","InputGroup","InputGroupItem","ChipGroup","currentChip","Chip","FormErrorText","ActionGroup","FormSubmitButton","toUsers"],"mappings":"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"}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy