Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
theme.keycloak.v2.admin.resources.assets.PermissionDetails-71bca8e8.js.map Maven / Gradle / Ivy
Go to download
The user inferface to administrate the Keycloak server.
{"version":3,"file":"PermissionDetails-71bca8e8.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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"}