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

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

There is a newer version: 26.0.7
Show newest version
{"version":3,"file":"NewClientPolicyCondition-BGdDHdFi.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  HelpItem,\n  KeycloakSelect,\n  SelectVariant,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n  ActionGroup,\n  AlertVariant,\n  Button,\n  FormGroup,\n  PageSection,\n  SelectOption,\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 { Link, useNavigate, useParams } from \"react-router-dom\";\nimport { useAdminClient } 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 { 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 { adminClient } = useAdminClient();\n\n  const { t } = useTranslation();\n  const { addAlert, addError } = useAlerts();\n  const navigate = useNavigate();\n  const { realm } = useRealm();\n\n  const [openConditionType, setOpenConditionType] = useState(false);\n  const [isGlobalPolicy, setIsGlobalPolicy] = 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    () =>\n      adminClient.clientPolicies.listPolicies({\n        includeGlobalPolicies: true,\n      }),\n\n    (policies) => {\n      setPolicies(policies.policies ?? []);\n\n      if (conditionName) {\n        let currentPolicy = policies.policies?.find(\n          (item) => item.name === policyName,\n        );\n        if (currentPolicy === undefined) {\n          currentPolicy = policies.globalPolicies?.find(\n            (item) => item.name === policyName,\n          );\n          setIsGlobalPolicy(currentPolicy !== undefined);\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(\"updateClientConditionSuccess\")\n          : t(\"createClientConditionSuccess\"),\n        AlertVariant.success,\n      );\n    } catch (error) {\n      addError(\"createClientConditionError\", error);\n    }\n  };\n\n  return (\n    <>\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          {!isGlobalPolicy && (\n            \n              \n                {conditionName ? t(\"save\") : t(\"add\")}\n              \n              \n                  navigate(\n                    toEditClientPolicy({ realm, policyName: policyName! }),\n                  )\n                }\n              >\n                {t(\"cancel\")}\n              \n            \n          )}\n        \n        {isGlobalPolicy && (\n          
\n (\n \n )}\n variant=\"primary\"\n >\n {t(\"back\")}\n \n
\n )}\n
\n \n );\n}\n"],"names":["NewClientPolicyCondition","adminClient","useAdminClient","t","useTranslation","addAlert","addError","useAlerts","navigate","useNavigate","realm","useRealm","openConditionType","setOpenConditionType","useState","isGlobalPolicy","setIsGlobalPolicy","policies","setPolicies","condition","setCondition","conditionData","setConditionData","conditionType","setConditionType","conditionProperties","setConditionProperties","policyName","conditionName","useParams","serverInfo","useServerInfo","form","useForm","conditionTypes","setupForm","useFetch","currentPolicy","item","typeAndConfigData","currentCondition","save","configPolicy","configValues","writeConfig","r","p","updatedPolicies","policy","conditions","createdCondition","index","newConditions","toEditClientPolicy","AlertVariant","error","jsxs","Fragment","jsx","ViewHeader","PageSection","FormAccess","FormGroup","HelpItem","camelCase","Controller","field","KeycloakSelect","toggle","value","SelectVariant","SelectOption","FormProvider","DynamicComponents","ActionGroup","Button","props","Link"],"mappings":"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"}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy