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

theme.keycloak.v2.admin.resources.assets.PermissionDetails-5e6e4c6d.js.map Maven / Gradle / Ivy

There is a newer version: 25.0.1
Show newest version
{"version":3,"file":"PermissionDetails-5e6e4c6d.js","sources":["../../src/clients/authorization/ScopeSelect.tsx","../../src/clients/authorization/PermissionDetails.tsx"],"sourcesContent":["import type ScopeRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/scopeRepresentation\";\nimport { Select, SelectOption, SelectVariant } from \"@patternfly/react-core\";\nimport { useRef, useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { adminClient } from \"../../admin-client\";\nimport { useFetch } from \"../../utils/useFetch\";\n\ntype ScopeSelectProps = {\n  clientId: string;\n  resourceId?: string;\n  preSelected?: string;\n};\n\nexport const ScopeSelect = ({\n  clientId,\n  resourceId,\n  preSelected,\n}: ScopeSelectProps) => {\n  const { t } = useTranslation(\"clients\");\n\n  const {\n    control,\n    getValues,\n    setValue,\n    formState: { errors },\n  } = useFormContext();\n\n  const [scopes, setScopes] = useState([]);\n  const [selectedScopes, setSelectedScopes] = useState(\n    []\n  );\n  const [search, setSearch] = useState(\"\");\n  const [open, setOpen] = useState(false);\n  const firstUpdate = useRef(true);\n\n  const values: string[] | undefined = getValues(\"scopes\");\n\n  const toSelectOptions = (scopes: ScopeRepresentation[]) =>\n    scopes.map((scope) => (\n      \n        {scope.name}\n      \n    ));\n\n  useFetch(\n    async (): Promise => {\n      if (!resourceId) {\n        return adminClient.clients.listAllScopes(\n          Object.assign(\n            { id: clientId, deep: false },\n            search === \"\" ? null : { name: search }\n          )\n        );\n      }\n\n      if (resourceId && !firstUpdate.current) {\n        setValue(\"scopes\", []);\n      }\n\n      firstUpdate.current = false;\n      return adminClient.clients.listScopesByResource({\n        id: clientId,\n        resourceName: resourceId,\n      });\n    },\n    (scopes) => {\n      setScopes(scopes);\n      if (!search)\n        setSelectedScopes(\n          scopes.filter((s: ScopeRepresentation) => values?.includes(s.id!))\n        );\n    },\n    [resourceId, search]\n  );\n\n  return (\n     value.length > 0 }}\n      render={({ field }) => (\n         {\n            setSearch(filter);\n            return toSelectOptions(scopes);\n          }}\n          onClear={() => {\n            field.onChange([]);\n            setSearch(\"\");\n          }}\n          selections={selectedScopes.map((s) => s.name)}\n          onSelect={(_, selectedValue) => {\n            const option =\n              typeof selectedValue === \"string\"\n                ? selectedScopes.find((s) => s.name === selectedValue)!\n                : (selectedValue as ScopeRepresentation);\n            const changedValue = selectedScopes.find((p) => p.id === option.id)\n              ? selectedScopes.filter((p) => p.id !== option.id)\n              : [...selectedScopes, option];\n\n            field.onChange(changedValue.map((s) => s.id));\n            setSelectedScopes(changedValue);\n            setSearch(\"\");\n          }}\n          isOpen={open}\n          aria-labelledby={t(\"scopes\")}\n          validated={errors.scopes ? \"error\" : \"default\"}\n          isDisabled={!!preSelected}\n          typeAheadAriaLabel={t(\"scopes\")}\n        >\n          {toSelectOptions(scopes)}\n        \n      )}\n    />\n  );\n};\n","import type PolicyRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/policyRepresentation\";\nimport { DecisionStrategy } from \"@keycloak/keycloak-admin-client/lib/defs/policyRepresentation\";\nimport {\n  ActionGroup,\n  AlertVariant,\n  Button,\n  ButtonVariant,\n  DropdownItem,\n  FormGroup,\n  PageSection,\n  Radio,\n  SelectVariant,\n  Switch,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { Controller, FormProvider, useForm, useWatch } 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 { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { KeycloakSpinner } from \"../../components/keycloak-spinner/KeycloakSpinner\";\nimport { KeycloakTextArea } from \"../../components/keycloak-text-area/KeycloakTextArea\";\nimport { KeycloakTextInput } from \"../../components/keycloak-text-input/KeycloakTextInput\";\nimport { ViewHeader } from \"../../components/view-header/ViewHeader\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport { toUpperCase } from \"../../util\";\nimport { useParams } from \"../../utils/useParams\";\nimport { toAuthorizationTab } from \"../routes/AuthenticationTab\";\nimport type { NewPermissionParams } from \"../routes/NewPermission\";\nimport {\n  PermissionDetailsParams,\n  toPermissionDetails,\n} from \"../routes/PermissionDetails\";\nimport { ResourcesPolicySelect } from \"./ResourcesPolicySelect\";\nimport { ScopeSelect } from \"./ScopeSelect\";\n\ntype FormFields = PolicyRepresentation & {\n  resourceType: string;\n};\n\nexport default function PermissionDetails() {\n  const { t } = useTranslation(\"clients\");\n\n  const form = useForm({\n    mode: \"onChange\",\n  });\n  const {\n    register,\n    control,\n    reset,\n    formState: { errors },\n    handleSubmit,\n  } = form;\n\n  const navigate = useNavigate();\n  const { id, realm, permissionType, permissionId, selectedId } = useParams<\n    NewPermissionParams & PermissionDetailsParams\n  >();\n\n  const { addAlert, addError } = useAlerts();\n  const [permission, setPermission] = useState();\n  const [applyToResourceTypeFlag, setApplyToResourceTypeFlag] = useState(false);\n\n  useFetch(\n    async () => {\n      if (!permissionId) {\n        return {};\n      }\n      const [permission, resources, policies, scopes] = await Promise.all([\n        adminClient.clients.findOnePermission({\n          id,\n          type: permissionType,\n          permissionId,\n        }),\n        adminClient.clients.getAssociatedResources({\n          id,\n          permissionId,\n        }),\n        adminClient.clients.getAssociatedPolicies({\n          id,\n          permissionId,\n        }),\n        adminClient.clients.getAssociatedScopes({\n          id,\n          permissionId,\n        }),\n      ]);\n\n      if (!permission) {\n        throw new Error(t(\"common:notFound\"));\n      }\n\n      return {\n        permission,\n        resources: resources.map((r) => r._id),\n        policies: policies.map((p) => p.id!),\n        scopes: scopes.map((s) => s.id!),\n      };\n    },\n    ({ permission, resources, policies, scopes }) => {\n      reset({ ...permission, resources, policies, scopes });\n      if (permission && \"resourceType\" in permission) {\n        setApplyToResourceTypeFlag(\n          !!(permission as { resourceType: string }).resourceType\n        );\n      }\n      setPermission({ ...permission, resources, policies });\n    },\n    []\n  );\n\n  const save = async (permission: PolicyRepresentation) => {\n    try {\n      if (permissionId) {\n        await adminClient.clients.updatePermission(\n          { id, type: permissionType, permissionId },\n          permission\n        );\n      } else {\n        const result = await adminClient.clients.createPermission(\n          { id, type: permissionType },\n          permission\n        );\n        navigate(\n          toPermissionDetails({\n            realm,\n            id,\n            permissionType,\n            permissionId: result.id!,\n          })\n        );\n      }\n      addAlert(\n        t((permissionId ? \"update\" : \"create\") + \"PermissionSuccess\"),\n        AlertVariant.success\n      );\n    } catch (error) {\n      addError(\"clients:permissionSaveError\", error);\n    }\n  };\n\n  const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n    titleKey: \"clients:deletePermission\",\n    messageKey: t(\"deletePermissionConfirm\", {\n      permission: permission?.name,\n    }),\n    continueButtonVariant: ButtonVariant.danger,\n    continueButtonLabel: \"clients:confirm\",\n    onConfirm: async () => {\n      try {\n        await adminClient.clients.delPermission({\n          id,\n          type: permissionType,\n          permissionId: permissionId,\n        });\n        addAlert(t(\"permissionDeletedSuccess\"), AlertVariant.success);\n        navigate(\n          toAuthorizationTab({ realm, clientId: id, tab: \"permissions\" })\n        );\n      } catch (error) {\n        addError(\"clients:permissionDeletedError\", error);\n      }\n    },\n  });\n\n  const resourcesIds = useWatch({\n    control,\n    name: \"resources\",\n    defaultValue: [],\n  });\n\n  if (!permission) {\n    return ;\n  }\n\n  return (\n    <>\n      \n       toggleDeleteDialog()}\n                >\n                  {t(\"common:delete\")}\n                ,\n              ]\n            : undefined\n        }\n      />\n      \n        \n          \n            \n              }\n            >\n              \n            \n            \n              }\n              validated={errors.description ? \"error\" : \"default\"}\n              helperTextInvalid={errors.description?.message}\n            >\n              \n            \n            \n              }\n            >\n              \n            \n            {applyToResourceTypeFlag ? (\n              \n                }\n                isRequired={permissionType === \"scope\"}\n              >\n                \n              \n            ) : (\n              \n                }\n                helperTextInvalid={t(\"common:required\")}\n                validated={errors.resources ? \"error\" : \"default\"}\n                isRequired={permissionType !== \"scope\"}\n              >\n                \n              \n            )}\n            {permissionType === \"scope\" && (\n              \n                }\n                helperTextInvalid={t(\"common:required\")}\n                validated={errors.scopes ? \"error\" : \"default\"}\n                isRequired\n              >\n                \n              \n            )}\n            \n              }\n            >\n              \n            \n            \n              }\n              fieldId=\"policyEnforcementMode\"\n              hasNoPaddingTop\n            >\n               (\n                  <>\n                    {Object.values(DecisionStrategy).map((strategy) => (\n                       field.onChange(strategy)}\n                        label={t(`decisionStrategies.${strategy}`)}\n                        className=\"pf-u-mb-md\"\n                      />\n                    ))}\n                  \n                )}\n              />\n            \n            \n              
\n \n {t(\"common:save\")}\n \n\n (\n \n )}\n >\n {t(\"common:cancel\")}\n \n
\n
\n
\n \n
\n \n );\n}\n"],"names":["ScopeSelect","clientId","resourceId","preSelected","t","useTranslation","control","getValues","setValue","errors","useFormContext","scopes","setScopes","useState","selectedScopes","setSelectedScopes","search","setSearch","open","setOpen","firstUpdate","useRef","values","toSelectOptions","scope","jsx","SelectOption","useFetch","adminClient","s","Controller","value","field","Select","SelectVariant","_","filter","selectedValue","option","changedValue","p","PermissionDetails","form","useForm","register","reset","handleSubmit","navigate","useNavigate","id","realm","permissionType","permissionId","selectedId","useParams","addAlert","addError","useAlerts","permission","setPermission","applyToResourceTypeFlag","setApplyToResourceTypeFlag","resources","policies","r","save","result","toPermissionDetails","AlertVariant","error","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","ButtonVariant","toAuthorizationTab","resourcesIds","useWatch","jsxs","Fragment","ViewHeader","toUpperCase","DropdownItem","PageSection","FormAccess","FormProvider","FormGroup","HelpItem","KeycloakTextInput","KeycloakTextArea","Switch","ResourcesPolicySelect","DecisionStrategy","strategy","Radio","ActionGroup","Button","props","Link","KeycloakSpinner"],"mappings":"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"}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy