theme.keycloak.v2.admin.resources.assets.UserForm-PSfSn7pK.js.map Maven / Gradle / Ivy
{"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","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 \n \n )}\n />\n {errors.requiredActions && (\n \n )}\n \n )}\n\n \n \n {user?.id ? t(\"save\") : t(\"create\")}\n \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