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

theme.keycloak.v2.admin.resources.assets.ExecutorForm-249de8ac.js.map Maven / Gradle / Ivy

There is a newer version: 25.0.1
Show newest version
{"version":3,"file":"ExecutorForm-249de8ac.js","sources":["../../src/realm-settings/ExecutorForm.tsx"],"sourcesContent":["import type { ConfigPropertyRepresentation } from \"@keycloak/keycloak-admin-client/lib/defs/authenticatorConfigInfoRepresentation\";\nimport type ClientProfileRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientProfileRepresentation\";\nimport type ComponentTypeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/componentTypeRepresentation\";\nimport {\n  ActionGroup,\n  AlertVariant,\n  Button,\n  FormGroup,\n  PageSection,\n  Select,\n  SelectOption,\n  SelectVariant,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { HelpItem } from \"ui-shared\";\n\nimport { adminClient } from \"../admin-client\";\nimport { useAlerts } from \"../components/alert/Alerts\";\nimport { DynamicComponents } from \"../components/dynamic/DynamicComponents\";\nimport { FormAccess } from \"../components/form/FormAccess\";\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 { ClientProfileParams, toClientProfile } from \"./routes/ClientProfile\";\nimport type { ExecutorParams } from \"./routes/Executor\";\n\ntype ExecutorForm = {\n  config?: object;\n  executor: string;\n};\n\nconst defaultValues: ExecutorForm = {\n  config: {},\n  executor: \"\",\n};\n\nexport default function ExecutorForm() {\n  const { t } = useTranslation(\"realm-settings\");\n  const navigate = useNavigate();\n  const { realm, profileName } = useParams();\n  const { executorName } = useParams();\n  const { addAlert, addError } = useAlerts();\n  const [selectExecutorTypeOpen, setSelectExecutorTypeOpen] = useState(false);\n  const serverInfo = useServerInfo();\n  const executorTypes =\n    serverInfo.componentTypes?.[\n      \"org.keycloak.services.clientpolicy.executor.ClientPolicyExecutorProvider\"\n    ];\n  const [executors, setExecutors] = useState([]);\n  const [executorProperties, setExecutorProperties] = useState<\n    ConfigPropertyRepresentation[]\n  >([]);\n  const [globalProfiles, setGlobalProfiles] = useState<\n    ClientProfileRepresentation[]\n  >([]);\n  const [profiles, setProfiles] = useState([]);\n  const form = useForm({ defaultValues });\n  const { control, reset, handleSubmit } = form;\n  const editMode = !!executorName;\n\n  const setupForm = (profiles: ClientProfileRepresentation[]) => {\n    const profile = profiles.find((profile) => profile.name === profileName);\n    const executor = profile?.executors?.find(\n      (executor) => executor.executor === executorName,\n    );\n    if (executor) reset({ config: executor.configuration });\n  };\n\n  useFetch(\n    () =>\n      adminClient.clientPolicies.listProfiles({ includeGlobalProfiles: true }),\n    (profiles) => {\n      setGlobalProfiles(profiles.globalProfiles!);\n      setProfiles(profiles.profiles!);\n\n      setupForm(profiles.profiles!);\n      setupForm(profiles.globalProfiles!);\n    },\n    [],\n  );\n\n  const save = async () => {\n    const formValues = form.getValues();\n    const updatedProfiles = profiles.map((profile) => {\n      if (profile.name !== profileName) {\n        return profile;\n      }\n\n      const executors = (profile.executors ?? []).concat({\n        executor: formValues.executor,\n        configuration: formValues.config || {},\n      });\n\n      if (editMode) {\n        const profileExecutor = profile.executors!.find(\n          (executor) => executor.executor === executorName,\n        );\n        profileExecutor!.configuration = {\n          ...profileExecutor!.configuration,\n          ...formValues.config,\n        };\n      }\n\n      if (editMode) {\n        return profile;\n      }\n      return {\n        ...profile,\n        executors,\n      };\n    });\n    try {\n      await adminClient.clientPolicies.createProfiles({\n        profiles: updatedProfiles,\n        globalProfiles: globalProfiles,\n      });\n      addAlert(\n        editMode\n          ? t(\"realm-settings:updateExecutorSuccess\")\n          : t(\"realm-settings:addExecutorSuccess\"),\n        AlertVariant.success,\n      );\n\n      navigate(toClientProfile({ realm, profileName }));\n    } catch (error) {\n      addError(\n        editMode\n          ? \"realm-settings:updateExecutorError\"\n          : \"realm-settings:addExecutorError\",\n        error,\n      );\n    }\n  };\n\n  const globalProfile = globalProfiles.find(\n    (globalProfile) => globalProfile.name === profileName,\n  );\n\n  const profileExecutorType = executorTypes?.find(\n    (executor) => executor.id === executorName,\n  );\n\n  const editedProfileExecutors =\n    profileExecutorType?.properties.map(\n      (property) => {\n        const globalDefaultValues = editMode ? property.defaultValue : \"\";\n        return {\n          ...property,\n          defaultValue: globalDefaultValues,\n        };\n      },\n    );\n\n  return (\n    <>\n      \n      \n        \n           0 && executors[0].helpText! !== \"\" ? (\n                \n              ) : editMode ? (\n                \n              ) : undefined\n            }\n          >\n             (\n                 setSelectExecutorTypeOpen(isOpen)}\n                  onSelect={(_, value) => {\n                    reset({ ...defaultValues, executor: value.toString() });\n                    const selectedExecutor = executorTypes?.filter(\n                      (type) => type.id === value,\n                    );\n                    setExecutors(selectedExecutor ?? []);\n                    setExecutorProperties(\n                      selectedExecutor?.[0].properties ?? [],\n                    );\n                    setSelectExecutorTypeOpen(false);\n                  }}\n                  selections={editMode ? executorName : field.value}\n                  variant={SelectVariant.single}\n                  data-testid=\"executorType-select\"\n                  aria-label={t(\"executorType\")}\n                  isOpen={selectExecutorTypeOpen}\n                  maxHeight={580}\n                  isDisabled={editMode}\n                >\n                  {executorTypes?.map((option) => (\n                    \n                  ))}\n                \n              )}\n            />\n          \n          \n            \n          \n          {!globalProfile && (\n            \n               handleSubmit(save)()}\n                data-testid=\"addExecutor-saveBtn\"\n              >\n                {editMode ? t(\"common:save\") : t(\"common:add\")}\n              \n               (\n                  \n                )}\n                data-testid=\"addExecutor-cancelBtn\"\n              >\n                {t(\"common:cancel\")}\n              \n            \n          )}\n        \n        {editMode && globalProfile && (\n          
\n (\n \n )}\n variant=\"primary\"\n >\n {t(\"realm-settings:back\")}\n \n
\n )}\n
\n \n );\n}\n"],"names":["defaultValues","ExecutorForm","t","useTranslation","navigate","useNavigate","realm","profileName","useParams","executorName","addAlert","addError","useAlerts","selectExecutorTypeOpen","setSelectExecutorTypeOpen","useState","executorTypes","useServerInfo","executors","setExecutors","executorProperties","setExecutorProperties","globalProfiles","setGlobalProfiles","profiles","setProfiles","form","useForm","control","reset","handleSubmit","editMode","setupForm","executor","profile","useFetch","adminClient","save","formValues","updatedProfiles","profileExecutor","AlertVariant","toClientProfile","error","globalProfile","profileExecutorType","editedProfileExecutors","property","globalDefaultValues","jsxs","Fragment","jsx","ViewHeader","PageSection","FormAccess","FormGroup","HelpItem","Controller","field","Select","isOpen","_","value","selectedExecutor","type","SelectVariant","option","SelectOption","FormProvider","DynamicComponents","ActionGroup","Button","props","Link"],"mappings":"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"}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy