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

theme.keycloak.v2.admin.resources.assets.NewClientPolicyCondition-01a420fe.js.map Maven / Gradle / Ivy

There is a newer version: 25.0.1
Show newest version
{"version":3,"file":"NewClientPolicyCondition-01a420fe.js","sources":["../../src/realm-settings/NewClientPolicyCondition.tsx"],"sourcesContent":["import type { ConfigPropertyRepresentation } from \"@keycloak/keycloak-admin-client/lib/defs/authenticatorConfigInfoRepresentation\";\nimport type ClientPolicyConditionRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientPolicyConditionRepresentation\";\nimport type ClientPolicyRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/clientPolicyRepresentation\";\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 { camelCase } from \"lodash-es\";\nimport { useState } from \"react\";\nimport { Controller, FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useNavigate, useParams } 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 { FormPanel } from \"../components/scroll-form/FormPanel\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport { useServerInfo } from \"../context/server-info/ServerInfoProvider\";\nimport { useFetch } from \"../utils/useFetch\";\nimport { toEditClientPolicy } from \"./routes/EditClientPolicy\";\nimport type { EditClientPolicyConditionParams } from \"./routes/EditCondition\";\n\nexport type ItemType = { value: string };\n\ntype ConfigProperty = ConfigPropertyRepresentation & {\n  conditions: any;\n  config: any;\n};\n\nexport default function NewClientPolicyCondition() {\n  const { t } = useTranslation(\"realm-settings\");\n  const { addAlert, addError } = useAlerts();\n  const navigate = useNavigate();\n  const { realm } = useRealm();\n\n  const [openConditionType, setOpenConditionType] = useState(false);\n  const [policies, setPolicies] = useState([]);\n\n  const [condition, setCondition] = useState<\n    ClientPolicyConditionRepresentation[]\n  >([]);\n  const [conditionData, setConditionData] =\n    useState();\n  const [conditionType, setConditionType] = useState(\"\");\n  const [conditionProperties, setConditionProperties] = useState<\n    ConfigPropertyRepresentation[]\n  >([]);\n\n  const { policyName, conditionName } =\n    useParams();\n\n  const serverInfo = useServerInfo();\n  const form = useForm();\n\n  const conditionTypes =\n    serverInfo.componentTypes?.[\n      \"org.keycloak.services.clientpolicy.condition.ClientPolicyConditionProvider\"\n    ];\n\n  const setupForm = (condition: ClientPolicyConditionRepresentation) => {\n    form.reset({ config: condition.configuration || {} });\n  };\n\n  useFetch(\n    () => adminClient.clientPolicies.listPolicies(),\n\n    (policies) => {\n      setPolicies(policies.policies ?? []);\n\n      if (conditionName) {\n        const currentPolicy = policies.policies?.find(\n          (item) => item.name === policyName\n        );\n\n        const typeAndConfigData = currentPolicy?.conditions?.find(\n          (item) => item.condition === conditionName\n        );\n\n        const currentCondition = conditionTypes?.find(\n          (condition) => condition.id === conditionName\n        );\n\n        setConditionData(typeAndConfigData!);\n        setConditionProperties(currentCondition?.properties!);\n        setupForm(typeAndConfigData!);\n      }\n    },\n    []\n  );\n\n  const save = async (configPolicy: ConfigProperty) => {\n    const configValues = configPolicy.config;\n\n    const writeConfig = () => {\n      return conditionProperties.reduce((r: any, p) => {\n        r[p.name!] = configValues[p.name!];\n        return r;\n      }, {});\n    };\n\n    const updatedPolicies = policies.map((policy) => {\n      if (policy.name !== policyName) {\n        return policy;\n      }\n\n      let conditions = policy.conditions ?? [];\n\n      if (conditionName) {\n        const createdCondition = {\n          condition: conditionData?.condition,\n          configuration: writeConfig(),\n        };\n\n        const index = conditions.findIndex(\n          (condition) => conditionName === condition.condition\n        );\n\n        if (index === -1) {\n          return;\n        }\n\n        const newConditions = [\n          ...conditions.slice(0, index),\n          createdCondition,\n          ...conditions.slice(index + 1),\n        ];\n\n        return {\n          ...policy,\n          conditions: newConditions,\n        };\n      }\n\n      conditions = conditions.concat({\n        condition: condition[0].condition,\n        configuration: writeConfig(),\n      });\n\n      return {\n        ...policy,\n        conditions,\n      };\n    }) as ClientPolicyRepresentation[];\n\n    try {\n      await adminClient.clientPolicies.updatePolicy({\n        policies: updatedPolicies,\n      });\n      setPolicies(updatedPolicies);\n      navigate(toEditClientPolicy({ realm, policyName: policyName! }));\n      addAlert(\n        conditionName\n          ? t(\"realm-settings:updateClientConditionSuccess\")\n          : t(\"realm-settings:createClientConditionSuccess\"),\n        AlertVariant.success\n      );\n    } catch (error) {\n      addError(\"realm-settings:createClientConditionError\", error);\n    }\n  };\n\n  return (\n    \n      \n        \n          \n            }\n          >\n             (\n                 setOpenConditionType(toggle)}\n                  onSelect={(_, value) => {\n                    field.onChange(value);\n                    setConditionProperties(\n                      (value as ComponentTypeRepresentation).properties\n                    );\n                    setConditionType((value as ComponentTypeRepresentation).id);\n                    setCondition([\n                      {\n                        condition: (value as ComponentTypeRepresentation).id,\n                      },\n                    ]);\n                    setOpenConditionType(false);\n                  }}\n                  selections={conditionName ? conditionName : conditionType}\n                  variant={SelectVariant.single}\n                  aria-label={t(\"conditionType\")}\n                  isOpen={openConditionType}\n                >\n                  {conditionTypes?.map((condition) => (\n                    \n                      {condition.id}\n                    \n                  ))}\n                \n              )}\n            />\n          \n\n          \n            \n          \n          \n            \n              {conditionName ? t(\"common:save\") : t(\"common:add\")}\n            \n            \n                navigate(toEditClientPolicy({ realm, policyName: policyName! }))\n              }\n            >\n              {t(\"common:cancel\")}\n            \n          \n        \n      \n    \n  );\n}\n"],"names":["NewClientPolicyCondition","t","useTranslation","addAlert","addError","useAlerts","navigate","useNavigate","realm","useRealm","openConditionType","setOpenConditionType","useState","policies","setPolicies","condition","setCondition","conditionData","setConditionData","conditionType","setConditionType","conditionProperties","setConditionProperties","policyName","conditionName","useParams","serverInfo","useServerInfo","form","useForm","conditionTypes","setupForm","useFetch","adminClient","typeAndConfigData","item","currentCondition","save","configPolicy","configValues","writeConfig","r","p","updatedPolicies","policy","conditions","createdCondition","index","newConditions","toEditClientPolicy","AlertVariant","error","jsx","PageSection","FormPanel","jsxs","FormAccess","FormGroup","HelpItem","camelCase","Controller","field","Select","toggle","_","value","SelectVariant","SelectOption","FormProvider","DynamicComponents","ActionGroup","Button"],"mappings":"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"}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy