theme.keycloak.v2.admin.resources.assets.ClientProfileForm-D1d6omqT.js.map Maven / Gradle / Ivy
{"version":3,"file":"ClientProfileForm-D1d6omqT.js","sources":["../../src/realm-settings/ClientProfileForm.tsx"],"sourcesContent":["import type ClientProfileRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientProfileRepresentation\";\nimport type ClientProfilesRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientProfilesRepresentation\";\nimport {\n HelpItem,\n TextAreaControl,\n TextControl,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n ButtonVariant,\n DataList,\n DataListCell,\n DataListItem,\n DataListItemCells,\n DataListItemRow,\n Divider,\n DropdownItem,\n Flex,\n FlexItem,\n Label,\n PageSection,\n Text,\n TextVariants,\n} from \"@patternfly/react-core\";\nimport { PlusCircleIcon, TrashIcon } from \"@patternfly/react-icons\";\nimport { Fragment, useMemo, useState } from \"react\";\nimport { FormProvider, useFieldArray, useForm } 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 { FormAccess } from \"../components/form/FormAccess\";\nimport { KeycloakSpinner } from \"../components/keycloak-spinner/KeycloakSpinner\";\nimport { ViewHeader } from \"../components/view-header/ViewHeader\";\nimport { useServerInfo } from \"../context/server-info/ServerInfoProvider\";\nimport { useFetch } from \"../utils/useFetch\";\nimport { useParams } from \"../utils/useParams\";\nimport { toAddExecutor } from \"./routes/AddExecutor\";\nimport { toClientPolicies } from \"./routes/ClientPolicies\";\nimport { ClientProfileParams, toClientProfile } from \"./routes/ClientProfile\";\nimport { toExecutor } from \"./routes/Executor\";\n\nimport \"./realm-settings-section.css\";\n\ntype ClientProfileForm = Required;\n\nconst defaultValues: ClientProfileForm = {\n name: \"\",\n description: \"\",\n executors: [],\n};\n\nexport default function ClientProfileForm() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const navigate = useNavigate();\n const form = useForm({\n defaultValues,\n mode: \"onChange\",\n });\n\n const {\n handleSubmit,\n setValue,\n getValues,\n formState: { isDirty },\n control,\n } = form;\n\n const { fields: profileExecutors, remove } = useFieldArray({\n name: \"executors\",\n control,\n });\n\n const { addAlert, addError } = useAlerts();\n const [profiles, setProfiles] = useState();\n const [isGlobalProfile, setIsGlobalProfile] = useState(false);\n const { realm, profileName } = useParams();\n const serverInfo = useServerInfo();\n const executorTypes = useMemo(\n () =>\n serverInfo.componentTypes?.[\n \"org.keycloak.services.clientpolicy.executor.ClientPolicyExecutorProvider\"\n ],\n [],\n );\n const [executorToDelete, setExecutorToDelete] = useState<{\n idx: number;\n name: string;\n }>();\n const editMode = profileName ? true : false;\n const [key, setKey] = useState(0);\n const reload = () => setKey(key + 1);\n\n useFetch(\n () =>\n adminClient.clientPolicies.listProfiles({ includeGlobalProfiles: true }),\n (profiles) => {\n setProfiles({\n globalProfiles: profiles.globalProfiles,\n profiles: profiles.profiles?.filter((p) => p.name !== profileName),\n });\n const globalProfile = profiles.globalProfiles?.find(\n (p) => p.name === profileName,\n );\n const profile = profiles.profiles?.find((p) => p.name === profileName);\n setIsGlobalProfile(globalProfile !== undefined);\n setValue(\"name\", globalProfile?.name ?? profile?.name ?? \"\");\n setValue(\n \"description\",\n globalProfile?.description ?? profile?.description ?? \"\",\n );\n setValue(\n \"executors\",\n globalProfile?.executors ?? profile?.executors ?? [],\n );\n },\n [key],\n );\n\n const save = async (form: ClientProfileForm) => {\n const updatedProfiles = form;\n\n try {\n await adminClient.clientPolicies.createProfiles({\n ...profiles,\n profiles: [...(profiles?.profiles || []), updatedProfiles],\n });\n\n addAlert(\n editMode\n ? t(\"updateClientProfileSuccess\")\n : t(\"createClientProfileSuccess\"),\n AlertVariant.success,\n );\n\n navigate(toClientProfile({ realm, profileName: form.name }));\n } catch (error) {\n addError(\n editMode ? \"updateClientProfileError\" : \"createClientProfileError\",\n error,\n );\n }\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: executorToDelete?.name!\n ? t(\"deleteExecutorProfileConfirmTitle\")\n : t(\"deleteClientProfileConfirmTitle\"),\n messageKey: executorToDelete?.name!\n ? t(\"deleteExecutorProfileConfirm\", {\n executorName: executorToDelete.name!,\n })\n : t(\"deleteClientProfileConfirm\", {\n profileName,\n }),\n continueButtonLabel: t(\"delete\"),\n continueButtonVariant: ButtonVariant.danger,\n\n onConfirm: async () => {\n if (executorToDelete?.name!) {\n remove(executorToDelete.idx);\n try {\n await adminClient.clientPolicies.createProfiles({\n ...profiles,\n profiles: [...(profiles!.profiles || []), getValues()],\n });\n addAlert(t(\"deleteExecutorSuccess\"), AlertVariant.success);\n navigate(toClientProfile({ realm, profileName }));\n } catch (error) {\n addError(t(\"deleteExecutorError\"), error);\n }\n } else {\n try {\n await adminClient.clientPolicies.createProfiles(profiles);\n addAlert(t(\"deleteClientSuccess\"), AlertVariant.success);\n navigate(toClientPolicies({ realm, tab: \"profiles\" }));\n } catch (error) {\n addError(t(\"deleteClientError\"), error);\n }\n }\n },\n });\n\n if (!profiles) {\n return ;\n }\n\n return (\n <>\n \n {t(\"global\")}\n ) : (\n \"\"\n ),\n },\n ]}\n divider\n dropdownItems={\n editMode && !isGlobalProfile\n ? [\n \n {t(\"deleteClientProfile\")}\n ,\n ]\n : undefined\n }\n />\n \n \n \n \n \n \n {!isGlobalProfile && (\n \n )}\n {editMode && !isGlobalProfile && (\n \n )}\n {!editMode && !isGlobalProfile && (\n \n )}\n \n {editMode && (\n <>\n \n \n \n {t(\"executors\")}\n \n \n \n {!isGlobalProfile && (\n \n \n \n )}\n \n {profileExecutors.length > 0 && (\n <>\n \n {isGlobalProfile && (\n \n )}\n >\n )}\n {profileExecutors.length === 0 && (\n <>\n \n \n {t(\"emptyExecutors\")}\n \n >\n )}\n >\n )}\n \n \n \n >\n );\n}\n"],"names":["defaultValues","ClientProfileForm","adminClient","useAdminClient","useTranslation","navigate","useNavigate","form","useForm","handleSubmit","setValue","getValues","isDirty","control","profileExecutors","remove","useFieldArray","addAlert","addError","useAlerts","profiles","setProfiles","useState","isGlobalProfile","setIsGlobalProfile","realm","profileName","useParams","serverInfo","useServerInfo","executorTypes","useMemo","executorToDelete","setExecutorToDelete","editMode","key","setKey","reload","useFetch","p","globalProfile","profile","save","updatedProfiles","AlertVariant","toClientProfile","error","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","ButtonVariant","toClientPolicies","jsxs","Fragment","jsx","ViewHeader","Label","DropdownItem","PageSection","FormProvider","FormAccess","TextControl","TextAreaControl","ActionGroup","Button","props","Link","Flex","FlexItem","Text","TextVariants","HelpItem","toAddExecutor","PlusCircleIcon","DataList","executor","idx","DataListItem","DataListItemRow","DataListItemCells","DataListCell","toExecutor","type","TrashIcon","Divider","KeycloakSpinner"],"mappings":"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"}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy