@keycloak/keycloak-admin-ui 26.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +202 -0
- package/README.md +59 -0
- package/lib/.vite/manifest.json +105 -0
- package/lib/App.d.ts +1 -0
- package/lib/Banners.d.ts +1 -0
- package/lib/CreateFlow-Cs5xTx-G.js +80 -0
- package/lib/CreateFlow-Cs5xTx-G.js.map +1 -0
- package/lib/DetailOrganization-qj8m2QUy.js +130 -0
- package/lib/DetailOrganization-qj8m2QUy.js.map +1 -0
- package/lib/ExecutorForm-DwNxoZuZ.js +198 -0
- package/lib/ExecutorForm-DwNxoZuZ.js.map +1 -0
- package/lib/FlowDetails-BMYNGuYV.js +10593 -0
- package/lib/FlowDetails-BMYNGuYV.js.map +1 -0
- package/lib/ForbiddenSection.d.ts +6 -0
- package/lib/NewOrganization-FsgFNfEd.js +36 -0
- package/lib/NewOrganization-FsgFNfEd.js.map +1 -0
- package/lib/PageHeader.d.ts +1 -0
- package/lib/PageNav.d.ts +1 -0
- package/lib/PageNotFoundSection.d.ts +1 -0
- package/lib/PermissionDetails-9Ej9jFpb.js +413 -0
- package/lib/PermissionDetails-9Ej9jFpb.js.map +1 -0
- package/lib/ResourceDetails-apuGPq7h.js +286 -0
- package/lib/ResourceDetails-apuGPq7h.js.map +1 -0
- package/lib/Root.d.ts +1 -0
- package/lib/ScopeDetails-CxuBwUaZ.js +153 -0
- package/lib/ScopeDetails-CxuBwUaZ.js.map +1 -0
- package/lib/admin-client.d.ts +10 -0
- package/lib/authentication/AuthenticationSection.d.ts +14 -0
- package/lib/authentication/BindFlowDialog.d.ts +6 -0
- package/lib/authentication/BuildInLabel.d.ts +1 -0
- package/lib/authentication/DuplicateFlowModal.d.ts +8 -0
- package/lib/authentication/EditFlowModal.d.ts +7 -0
- package/lib/authentication/EmptyExecutionState.d.ts +10 -0
- package/lib/authentication/FlowDetails.d.ts +3 -0
- package/lib/authentication/RequiredActions.d.ts +1 -0
- package/lib/authentication/components/AddFlowDropdown.d.ts +10 -0
- package/lib/authentication/components/DraggableTable.d.ts +20 -0
- package/lib/authentication/components/EditFlow.d.ts +7 -0
- package/lib/authentication/components/ExecutionConfigModal.d.ts +6 -0
- package/lib/authentication/components/FlowDiagram.d.ts +6 -0
- package/lib/authentication/components/FlowHeader.d.ts +1 -0
- package/lib/authentication/components/FlowRequirementDropdown.d.ts +7 -0
- package/lib/authentication/components/FlowRow.d.ts +14 -0
- package/lib/authentication/components/FlowTitle.d.ts +7 -0
- package/lib/authentication/components/RequiredActionConfigModal.d.ts +7 -0
- package/lib/authentication/components/UsedBy.d.ts +6 -0
- package/lib/authentication/components/diagram/ButtonEdge.d.ts +13 -0
- package/lib/authentication/components/diagram/ConditionalNode.d.ts +8 -0
- package/lib/authentication/components/diagram/SubFlowNode.d.ts +13 -0
- package/lib/authentication/components/diagram/auto-layout.d.ts +3 -0
- package/lib/authentication/components/modals/AddStepModal.d.ts +9 -0
- package/lib/authentication/components/modals/AddSubFlowModal.d.ts +14 -0
- package/lib/authentication/execution-model.d.ts +25 -0
- package/lib/authentication/form/CreateFlow.d.ts +1 -0
- package/lib/authentication/form/NameDescription.d.ts +1 -0
- package/lib/authentication/policies/CibaPolicy.d.ts +7 -0
- package/lib/authentication/policies/OtpPolicy.d.ts +7 -0
- package/lib/authentication/policies/PasswordPolicy.d.ts +7 -0
- package/lib/authentication/policies/Policies.d.ts +1 -0
- package/lib/authentication/policies/PolicyRow.d.ts +7 -0
- package/lib/authentication/policies/WebauthnPolicy.d.ts +8 -0
- package/lib/authentication/policies/util.d.ts +10 -0
- package/lib/authentication/routes/Authentication.d.ts +10 -0
- package/lib/authentication/routes/CreateFlow.d.ts +7 -0
- package/lib/authentication/routes/Flow.d.ts +11 -0
- package/lib/authentication/routes.d.ts +3 -0
- package/lib/client-scopes/ChangeTypeDropdown.d.ts +8 -0
- package/lib/client-scopes/ClientScopesSection.d.ts +1 -0
- package/lib/client-scopes/CreateClientScope.d.ts +1 -0
- package/lib/client-scopes/EditClientScope.d.ts +1 -0
- package/lib/client-scopes/add/MapperDialog.d.ts +12 -0
- package/lib/client-scopes/details/MapperList.d.ts +13 -0
- package/lib/client-scopes/details/MappingDetails.d.ts +1 -0
- package/lib/client-scopes/details/ScopeForm.d.ts +8 -0
- package/lib/client-scopes/details/SearchFilter.d.ts +22 -0
- package/lib/client-scopes/routes/ClientScope.d.ts +10 -0
- package/lib/client-scopes/routes/ClientScopes.d.ts +7 -0
- package/lib/client-scopes/routes/Mapper.d.ts +9 -0
- package/lib/client-scopes/routes/NewClientScope.d.ts +7 -0
- package/lib/client-scopes/routes.d.ts +3 -0
- package/lib/clients/AdvancedTab.d.ts +11 -0
- package/lib/clients/ClientDescription.d.ts +6 -0
- package/lib/clients/ClientDetails.d.ts +7 -0
- package/lib/clients/ClientSessions.d.ts +6 -0
- package/lib/clients/ClientSettings.d.ts +7 -0
- package/lib/clients/ClientsSection.d.ts +1 -0
- package/lib/clients/add/AccessSettings.d.ts +2 -0
- package/lib/clients/add/CapabilityConfig.d.ts +6 -0
- package/lib/clients/add/GeneralSettings.d.ts +1 -0
- package/lib/clients/add/LoginSettings.d.ts +5 -0
- package/lib/clients/add/LoginSettingsPanel.d.ts +3 -0
- package/lib/clients/add/LogoutPanel.d.ts +2 -0
- package/lib/clients/add/NewClientForm.d.ts +1 -0
- package/lib/clients/add/SamlConfig.d.ts +9 -0
- package/lib/clients/add/SamlSignature.d.ts +1 -0
- package/lib/clients/advanced/AddHostDialog.d.ts +8 -0
- package/lib/clients/advanced/AdvancedSettings.d.ts +8 -0
- package/lib/clients/advanced/ApplicationUrls.d.ts +5 -0
- package/lib/clients/advanced/AuthenticationOverrides.d.ts +8 -0
- package/lib/clients/advanced/ClusteringPanel.d.ts +2 -0
- package/lib/clients/advanced/FineGrainOpenIdConnect.d.ts +7 -0
- package/lib/clients/advanced/FineGrainSamlEndpointConfig.d.ts +6 -0
- package/lib/clients/advanced/OpenIdConnectCompatibilityModes.d.ts +7 -0
- package/lib/clients/advanced/TokenLifespan.d.ts +9 -0
- package/lib/clients/authorization/AuthorizationDataModal.d.ts +6 -0
- package/lib/clients/authorization/AuthorizationEvaluate.d.ts +36 -0
- package/lib/clients/authorization/AuthorizationEvaluateResource.d.ts +8 -0
- package/lib/clients/authorization/AuthorizationEvaluateResourcePolicies.d.ts +10 -0
- package/lib/clients/authorization/AuthorizationExport.d.ts +1 -0
- package/lib/clients/authorization/DecisionStrategySelect.d.ts +7 -0
- package/lib/clients/authorization/DeleteScopeDialog.d.ts +11 -0
- package/lib/clients/authorization/DetailCell.d.ts +7 -0
- package/lib/clients/authorization/DetailDescription.d.ts +12 -0
- package/lib/clients/authorization/EmptyPermissionsState.d.ts +7 -0
- package/lib/clients/authorization/ImportDialog.d.ts +7 -0
- package/lib/clients/authorization/KeyBasedAttributeInput.d.ts +16 -0
- package/lib/clients/authorization/MoreLabel.d.ts +5 -0
- package/lib/clients/authorization/NewPolicyDialog.d.ts +8 -0
- package/lib/clients/authorization/PermissionDetails.d.ts +1 -0
- package/lib/clients/authorization/Permissions.d.ts +6 -0
- package/lib/clients/authorization/Policies.d.ts +6 -0
- package/lib/clients/authorization/ResourceDetails.d.ts +1 -0
- package/lib/clients/authorization/Resources.d.ts +6 -0
- package/lib/clients/authorization/ResourcesPolicySelect.d.ts +12 -0
- package/lib/clients/authorization/ScopeDetails.d.ts +1 -0
- package/lib/clients/authorization/ScopePicker.d.ts +3 -0
- package/lib/clients/authorization/ScopeSelect.d.ts +7 -0
- package/lib/clients/authorization/Scopes.d.ts +12 -0
- package/lib/clients/authorization/SearchDropdown.d.ts +17 -0
- package/lib/clients/authorization/Settings.d.ts +5 -0
- package/lib/clients/authorization/evaluate/Results.d.ts +8 -0
- package/lib/clients/authorization/policy/Aggregate.d.ts +1 -0
- package/lib/clients/authorization/policy/Client.d.ts +1 -0
- package/lib/clients/authorization/policy/ClientScope.d.ts +5 -0
- package/lib/clients/authorization/policy/Group.d.ts +5 -0
- package/lib/clients/authorization/policy/JavaScript.d.ts +1 -0
- package/lib/clients/authorization/policy/LogicSelector.d.ts +5 -0
- package/lib/clients/authorization/policy/NameDescription.d.ts +5 -0
- package/lib/clients/authorization/policy/PolicyDetails.d.ts +2 -0
- package/lib/clients/authorization/policy/Regex.d.ts +1 -0
- package/lib/clients/authorization/policy/Role.d.ts +1 -0
- package/lib/clients/authorization/policy/Time.d.ts +1 -0
- package/lib/clients/authorization/policy/User.d.ts +1 -0
- package/lib/clients/credentials/ClientSecret.d.ts +7 -0
- package/lib/clients/credentials/Credentials.d.ts +7 -0
- package/lib/clients/credentials/SignedJWT.d.ts +5 -0
- package/lib/clients/credentials/X509.d.ts +1 -0
- package/lib/clients/import/ImportForm.d.ts +1 -0
- package/lib/clients/initial-access/AccessTokenDialog.d.ts +6 -0
- package/lib/clients/initial-access/CreateInitialAccessToken.d.ts +1 -0
- package/lib/clients/initial-access/InitialAccessTokenList.d.ts +1 -0
- package/lib/clients/keys/Certificate.d.ts +10 -0
- package/lib/clients/keys/ExportSamlKeyDialog.d.ts +8 -0
- package/lib/clients/keys/GenerateKeyDialog.d.ts +15 -0
- package/lib/clients/keys/ImportKeyDialog.d.ts +15 -0
- package/lib/clients/keys/Keys.d.ts +7 -0
- package/lib/clients/keys/SamlImportKeyDialog.d.ts +8 -0
- package/lib/clients/keys/SamlKeys.d.ts +8 -0
- package/lib/clients/keys/SamlKeysDialog.d.ts +15 -0
- package/lib/clients/keys/StoreSettings.d.ts +4 -0
- package/lib/clients/registration/AddProviderDialog.d.ts +6 -0
- package/lib/clients/registration/ClientRegistration.d.ts +1 -0
- package/lib/clients/registration/ClientRegistrationList.d.ts +5 -0
- package/lib/clients/registration/DetailProvider.d.ts +1 -0
- package/lib/clients/roles/CreateClientRole.d.ts +1 -0
- package/lib/clients/routes/AddClient.d.ts +7 -0
- package/lib/clients/routes/AddRegistrationProvider.d.ts +12 -0
- package/lib/clients/routes/AuthenticationTab.d.ts +10 -0
- package/lib/clients/routes/Client.d.ts +10 -0
- package/lib/clients/routes/ClientRegistration.d.ts +9 -0
- package/lib/clients/routes/ClientRole.d.ts +11 -0
- package/lib/clients/routes/ClientScopeTab.d.ts +10 -0
- package/lib/clients/routes/Clients.d.ts +10 -0
- package/lib/clients/routes/CreateInitialAccessToken.d.ts +7 -0
- package/lib/clients/routes/DedicatedScopeDetails.d.ts +11 -0
- package/lib/clients/routes/ImportClient.d.ts +7 -0
- package/lib/clients/routes/Mapper.d.ts +9 -0
- package/lib/clients/routes/NewPermission.d.ts +12 -0
- package/lib/clients/routes/NewPolicy.d.ts +9 -0
- package/lib/clients/routes/NewResource.d.ts +8 -0
- package/lib/clients/routes/NewRole.d.ts +8 -0
- package/lib/clients/routes/NewScope.d.ts +8 -0
- package/lib/clients/routes/PermissionDetails.d.ts +11 -0
- package/lib/clients/routes/PolicyDetails.d.ts +10 -0
- package/lib/clients/routes/Resource.d.ts +10 -0
- package/lib/clients/routes/Scope.d.ts +10 -0
- package/lib/clients/routes.d.ts +3 -0
- package/lib/clients/scopes/AddScopeDialog.d.ts +14 -0
- package/lib/clients/scopes/ClientScopes.d.ts +13 -0
- package/lib/clients/scopes/CopyToClipboardButton.d.ts +8 -0
- package/lib/clients/scopes/DedicatedScope.d.ts +6 -0
- package/lib/clients/scopes/DedicatedScopes.d.ts +1 -0
- package/lib/clients/scopes/EvaluateScopes.d.ts +5 -0
- package/lib/clients/scopes/GeneratedCodeTab.d.ts +8 -0
- package/lib/clients/service-account/ServiceAccount.d.ts +6 -0
- package/lib/clients/utils.d.ts +29 -0
- package/lib/components/SwitchControl.d.ts +4 -0
- package/lib/components/bread-crumb/GroupBreadCrumbs.d.ts +1 -0
- package/lib/components/bread-crumb/PageBreadCrumbs.d.ts +1 -0
- package/lib/components/client/ClientSelect.d.ts +7 -0
- package/lib/components/client-scope/ClientScopeTypes.d.ts +33 -0
- package/lib/components/confirm-dialog/ConfirmDialog.d.ts +21 -0
- package/lib/components/download-dialog/DownloadDialog.d.ts +8 -0
- package/lib/components/dropdown-panel/DropdownPanel.d.ts +10 -0
- package/lib/components/dynamic/BooleanComponent.d.ts +2 -0
- package/lib/components/dynamic/ClientSelectComponent.d.ts +2 -0
- package/lib/components/dynamic/DynamicComponents.d.ts +9 -0
- package/lib/components/dynamic/FileComponent.d.ts +2 -0
- package/lib/components/dynamic/GroupComponent.d.ts +2 -0
- package/lib/components/dynamic/ListComponent.d.ts +2 -0
- package/lib/components/dynamic/MapComponent.d.ts +2 -0
- package/lib/components/dynamic/MultivaluedListComponent.d.ts +2 -0
- package/lib/components/dynamic/MultivaluedStringComponent.d.ts +2 -0
- package/lib/components/dynamic/PasswordComponent.d.ts +2 -0
- package/lib/components/dynamic/RoleComponent.d.ts +2 -0
- package/lib/components/dynamic/ScriptComponent.d.ts +2 -0
- package/lib/components/dynamic/StringComponent.d.ts +2 -0
- package/lib/components/dynamic/TextComponent.d.ts +2 -0
- package/lib/components/dynamic/UrlComponent.d.ts +2 -0
- package/lib/components/dynamic/UserProfileAttributeListComponent.d.ts +2 -0
- package/lib/components/dynamic/components.d.ts +13 -0
- package/lib/components/error/ErrorRenderer.d.ts +2 -0
- package/lib/components/external-link/FormattedLink.d.ts +5 -0
- package/lib/components/form/FixedButtonGroup.d.ts +12 -0
- package/lib/components/form/FormAccess.d.ts +29 -0
- package/lib/components/group/GroupPath.d.ts +7 -0
- package/lib/components/group/GroupPickerDialog.d.ts +15 -0
- package/lib/components/help-enabler/HelpHeader.d.ts +1 -0
- package/lib/components/json-file-upload/FileUploadForm.d.ts +13 -0
- package/lib/components/json-file-upload/JsonFileUpload.d.ts +5 -0
- package/lib/components/json-file-upload/patternfly/FileUpload.d.ts +73 -0
- package/lib/components/json-file-upload/patternfly/FileUploadField.d.ts +67 -0
- package/lib/components/json-file-upload/patternfly/fileUtils.d.ts +12 -0
- package/lib/components/key-value-form/AttributeForm.d.ts +15 -0
- package/lib/components/key-value-form/KeySelect.d.ts +7 -0
- package/lib/components/key-value-form/KeyValueInput.d.ts +13 -0
- package/lib/components/key-value-form/ValueSelect.d.ts +8 -0
- package/lib/components/key-value-form/key-value-convert.d.ts +7 -0
- package/lib/components/keycloak-card/ClickableCard.d.ts +6 -0
- package/lib/components/keycloak-card/KeycloakCard.d.ts +11 -0
- package/lib/components/keycloak-spinner/KeycloakSpinner.d.ts +1 -0
- package/lib/components/multi-line-input/MultiLineInput.d.ts +9 -0
- package/lib/components/permission-tab/PermissionTab.d.ts +7 -0
- package/lib/components/realm-selector/RealmSelector.d.ts +1 -0
- package/lib/components/role-form/RoleForm.d.ts +11 -0
- package/lib/components/role-mapping/AddRoleMappingModal.d.ts +12 -0
- package/lib/components/role-mapping/RoleMapping.d.ts +55 -0
- package/lib/components/role-mapping/queries.d.ts +9 -0
- package/lib/components/role-mapping/resource.d.ts +40 -0
- package/lib/components/roles-list/RolesList.d.ts +13 -0
- package/lib/components/routable-tabs/RoutableTabs.d.ts +15 -0
- package/lib/components/time-selector/TimeSelector.d.ts +11 -0
- package/lib/components/time-selector/TimeSelectorControl.d.ts +13 -0
- package/lib/components/time-selector/TimeSelectorForm.d.ts +6 -0
- package/lib/components/users/UserDataTable.d.ts +10 -0
- package/lib/components/users/UserDataTableAttributeSearchForm.d.ts +12 -0
- package/lib/components/users/UserDataTableToolbarItems.d.ts +27 -0
- package/lib/components/users/UserSelect.d.ts +8 -0
- package/lib/components/view-header/ViewHeader.d.ts +25 -0
- package/lib/components/wizard-section-header/WizardSectionHeader.d.ts +6 -0
- package/lib/context/RecentRealms.d.ts +4 -0
- package/lib/context/access/Access.d.ts +10 -0
- package/lib/context/auth/admin-ui-endpoint.d.ts +4 -0
- package/lib/context/auth/uiRealmInfo.d.ts +5 -0
- package/lib/context/realm-context/RealmContext.d.ts +11 -0
- package/lib/context/server-info/ServerInfoProvider.d.ts +6 -0
- package/lib/context/whoami/WhoAmI.d.ts +23 -0
- package/lib/dashboard/Dashboard.d.ts +1 -0
- package/lib/dashboard/ProviderInfo.d.ts +1 -0
- package/lib/dashboard/routes/Dashboard.d.ts +11 -0
- package/lib/dashboard/routes.d.ts +3 -0
- package/lib/environment.d.ts +19 -0
- package/lib/events/AdminEvents.d.ts +1 -0
- package/lib/events/EventsSection.d.ts +1 -0
- package/lib/events/ResourceLinks.d.ts +7 -0
- package/lib/events/routes/Events.d.ts +10 -0
- package/lib/events/routes.d.ts +3 -0
- package/lib/favicon.svg +63 -0
- package/lib/groups/GroupAttributes.d.ts +1 -0
- package/lib/groups/GroupRoleMapping.d.ts +6 -0
- package/lib/groups/GroupTable.d.ts +5 -0
- package/lib/groups/GroupsModal.d.ts +10 -0
- package/lib/groups/GroupsSection.d.ts +1 -0
- package/lib/groups/Members.d.ts +1 -0
- package/lib/groups/MembersModal.d.ts +8 -0
- package/lib/groups/SubGroupsContext.d.ts +12 -0
- package/lib/groups/components/CheckableTreeView.d.ts +7 -0
- package/lib/groups/components/DeleteGroup.d.ts +9 -0
- package/lib/groups/components/GroupToolbar.d.ts +7 -0
- package/lib/groups/components/GroupTree.d.ts +8 -0
- package/lib/groups/components/MoveDialog.d.ts +8 -0
- package/lib/groups/groupIdUtils.d.ts +2 -0
- package/lib/groups/routes/Groups.d.ts +10 -0
- package/lib/groups/routes.d.ts +3 -0
- package/lib/help-urls.d.ts +19 -0
- package/lib/icon.svg +55 -0
- package/lib/identity-providers/IdentityProvidersSection.d.ts +1 -0
- package/lib/identity-providers/ManageOrderDialog.d.ts +7 -0
- package/lib/identity-providers/OIDCConfigurationRepresentation.d.ts +39 -0
- package/lib/identity-providers/add/AddIdentityProvider.d.ts +1 -0
- package/lib/identity-providers/add/AddMapper.d.ts +8 -0
- package/lib/identity-providers/add/AddMapperForm.d.ts +13 -0
- package/lib/identity-providers/add/AddOpenIdConnect.d.ts +1 -0
- package/lib/identity-providers/add/AddSamlConnect.d.ts +1 -0
- package/lib/identity-providers/add/AdvancedSettings.d.ts +6 -0
- package/lib/identity-providers/add/DescriptorSettings.d.ts +5 -0
- package/lib/identity-providers/add/DetailSettings.d.ts +1 -0
- package/lib/identity-providers/add/DiscoverySettings.d.ts +5 -0
- package/lib/identity-providers/add/ExtendedNonDiscoverySettings.d.ts +1 -0
- package/lib/identity-providers/add/GeneralSettings.d.ts +6 -0
- package/lib/identity-providers/add/OIDCAuthentication.d.ts +3 -0
- package/lib/identity-providers/add/OIDCGeneralSettings.d.ts +1 -0
- package/lib/identity-providers/add/OpenIdConnectSettings.d.ts +1 -0
- package/lib/identity-providers/add/ReqAuthnConstraintsSettings.d.ts +1 -0
- package/lib/identity-providers/add/SamlConnectSettings.d.ts +1 -0
- package/lib/identity-providers/add/SamlGeneralSettings.d.ts +5 -0
- package/lib/identity-providers/component/ClientIdSecret.d.ts +4 -0
- package/lib/identity-providers/component/DiscoveryEndpointField.d.ts +8 -0
- package/lib/identity-providers/component/DisplayOrder.d.ts +1 -0
- package/lib/identity-providers/component/FormGroupField.d.ts +10 -0
- package/lib/identity-providers/component/RedirectUrl.d.ts +3 -0
- package/lib/identity-providers/component/SwitchField.d.ts +8 -0
- package/lib/identity-providers/component/TextField.d.ts +2 -0
- package/lib/identity-providers/routes/AddMapper.d.ts +10 -0
- package/lib/identity-providers/routes/EditMapper.d.ts +10 -0
- package/lib/identity-providers/routes/IdentityProvider.d.ts +11 -0
- package/lib/identity-providers/routes/IdentityProviderCreate.d.ts +8 -0
- package/lib/identity-providers/routes/IdentityProviderKeycloakOidc.d.ts +7 -0
- package/lib/identity-providers/routes/IdentityProviderOidc.d.ts +7 -0
- package/lib/identity-providers/routes/IdentityProviderSaml.d.ts +7 -0
- package/lib/identity-providers/routes/IdentityProviders.d.ts +7 -0
- package/lib/identity-providers/routes.d.ts +3 -0
- package/lib/img_avatar.svg +33 -0
- package/lib/index-DXWy23Yd.js +65735 -0
- package/lib/index-DXWy23Yd.js.map +1 -0
- package/lib/index.d.ts +295 -0
- package/lib/keycloak-admin-ui.d.ts +2 -0
- package/lib/keycloak-admin-ui.js +309 -0
- package/lib/keycloak-admin-ui.js.map +1 -0
- package/lib/logo.svg +1 -0
- package/lib/main.d.ts +0 -0
- package/lib/organizations/DetailOraganzationHeader.d.ts +5 -0
- package/lib/organizations/DetailOrganization.d.ts +1 -0
- package/lib/organizations/IdentityProviderSelect.d.ts +7 -0
- package/lib/organizations/IdentityProviders.d.ts +1 -0
- package/lib/organizations/InviteMemberModal.d.ts +6 -0
- package/lib/organizations/LinkIdentityProviderModal.d.ts +8 -0
- package/lib/organizations/Members.d.ts +1 -0
- package/lib/organizations/NewOrganization.d.ts +1 -0
- package/lib/organizations/OrganizationForm.d.ts +11 -0
- package/lib/organizations/OrganizationModal.d.ts +9 -0
- package/lib/organizations/OrganizationsSection.d.ts +1 -0
- package/lib/organizations/routes/AddOrganization.d.ts +7 -0
- package/lib/organizations/routes/EditOrganization.d.ts +10 -0
- package/lib/organizations/routes/Organizations.d.ts +8 -0
- package/lib/organizations/routes.d.ts +3 -0
- package/lib/page/Page.d.ts +1 -0
- package/lib/page/PageHandler.d.ts +9 -0
- package/lib/page/PageList.d.ts +3 -0
- package/lib/page/routes.d.ts +16 -0
- package/lib/realm/add/NewRealmForm.d.ts +1 -0
- package/lib/realm/routes/AddRealm.d.ts +7 -0
- package/lib/realm/routes.d.ts +3 -0
- package/lib/realm-roles/CreateRealmRole.d.ts +1 -0
- package/lib/realm-roles/RealmRoleTabs.d.ts +1 -0
- package/lib/realm-roles/RealmRolesSection.d.ts +1 -0
- package/lib/realm-roles/UsersInRoleTab.d.ts +1 -0
- package/lib/realm-roles/routes/AddRole.d.ts +7 -0
- package/lib/realm-roles/routes/RealmRole.d.ts +10 -0
- package/lib/realm-roles/routes/RealmRoles.d.ts +7 -0
- package/lib/realm-roles/routes.d.ts +3 -0
- package/lib/realm-settings/AddClientProfileModal.d.ts +8 -0
- package/lib/realm-settings/AddTranslationModal.d.ts +15 -0
- package/lib/realm-settings/ClientProfileForm.d.ts +1 -0
- package/lib/realm-settings/DefaultGroupsTab.d.ts +1 -0
- package/lib/realm-settings/EmailTab.d.ts +7 -0
- package/lib/realm-settings/ExecutorForm.d.ts +1 -0
- package/lib/realm-settings/GeneralTab.d.ts +7 -0
- package/lib/realm-settings/LoginTab.d.ts +7 -0
- package/lib/realm-settings/NewAttributeSettings.d.ts +6 -0
- package/lib/realm-settings/NewClientPolicy.d.ts +1 -0
- package/lib/realm-settings/NewClientPolicyCondition.d.ts +4 -0
- package/lib/realm-settings/PartialExport.d.ts +5 -0
- package/lib/realm-settings/PartialImport.d.ts +5 -0
- package/lib/realm-settings/PoliciesTab.d.ts +1 -0
- package/lib/realm-settings/ProfilesTab.d.ts +1 -0
- package/lib/realm-settings/RealmSettingsSection.d.ts +1 -0
- package/lib/realm-settings/RealmSettingsTabs.d.ts +6 -0
- package/lib/realm-settings/SessionsTab.d.ts +7 -0
- package/lib/realm-settings/ThemesTab.d.ts +7 -0
- package/lib/realm-settings/TokensTab.d.ts +8 -0
- package/lib/realm-settings/UserRegistration.d.ts +1 -0
- package/lib/realm-settings/event-config/AddEventTypesDialog.d.ts +8 -0
- package/lib/realm-settings/event-config/EventConfigForm.d.ts +10 -0
- package/lib/realm-settings/event-config/EventListenersForm.d.ts +7 -0
- package/lib/realm-settings/event-config/EventsTab.d.ts +6 -0
- package/lib/realm-settings/event-config/EventsTypeTable.d.ts +12 -0
- package/lib/realm-settings/keys/KeysListTab.d.ts +6 -0
- package/lib/realm-settings/keys/KeysProvidersTab.d.ts +7 -0
- package/lib/realm-settings/keys/KeysTab.d.ts +1 -0
- package/lib/realm-settings/keys/key-providers/KeyProviderForm.d.ts +9 -0
- package/lib/realm-settings/keys/key-providers/KeyProviderModal.d.ts +7 -0
- package/lib/realm-settings/keys/key-providers/KeyProvidersPicker.d.ts +6 -0
- package/lib/realm-settings/localization/EffectiveMessageBundles.d.ts +6 -0
- package/lib/realm-settings/localization/LocalizationTab.d.ts +8 -0
- package/lib/realm-settings/localization/RealmOverrides.d.ts +21 -0
- package/lib/realm-settings/routes/AddAttribute.d.ts +7 -0
- package/lib/realm-settings/routes/AddClientPolicy.d.ts +7 -0
- package/lib/realm-settings/routes/AddClientProfile.d.ts +8 -0
- package/lib/realm-settings/routes/AddCondition.d.ts +8 -0
- package/lib/realm-settings/routes/AddExecutor.d.ts +8 -0
- package/lib/realm-settings/routes/Attribute.d.ts +8 -0
- package/lib/realm-settings/routes/ClientPolicies.d.ts +9 -0
- package/lib/realm-settings/routes/ClientProfile.d.ts +8 -0
- package/lib/realm-settings/routes/EditAttributesGroup.d.ts +8 -0
- package/lib/realm-settings/routes/EditClientPolicy.d.ts +8 -0
- package/lib/realm-settings/routes/EditCondition.d.ts +9 -0
- package/lib/realm-settings/routes/Executor.d.ts +9 -0
- package/lib/realm-settings/routes/KeyProvider.d.ts +10 -0
- package/lib/realm-settings/routes/KeysTab.d.ts +9 -0
- package/lib/realm-settings/routes/NewAttributesGroup.d.ts +7 -0
- package/lib/realm-settings/routes/RealmSettings.d.ts +10 -0
- package/lib/realm-settings/routes/UserProfile.d.ts +9 -0
- package/lib/realm-settings/routes.d.ts +3 -0
- package/lib/realm-settings/security-defences/BruteForceDetection.d.ts +7 -0
- package/lib/realm-settings/security-defences/HeadersForm.d.ts +7 -0
- package/lib/realm-settings/security-defences/HelpLinkTextInput.d.ts +6 -0
- package/lib/realm-settings/security-defences/SecurityDefenses.d.ts +7 -0
- package/lib/realm-settings/security-defences/Time.d.ts +5 -0
- package/lib/realm-settings/user-profile/AttributesGroupDetails.d.ts +2 -0
- package/lib/realm-settings/user-profile/AttributesGroupForm.d.ts +1 -0
- package/lib/realm-settings/user-profile/AttributesGroupTab.d.ts +5 -0
- package/lib/realm-settings/user-profile/AttributesTab.d.ts +5 -0
- package/lib/realm-settings/user-profile/JsonEditorTab.d.ts +1 -0
- package/lib/realm-settings/user-profile/UserProfileContext.d.ts +16 -0
- package/lib/realm-settings/user-profile/UserProfileTab.d.ts +5 -0
- package/lib/realm-settings/user-profile/attribute/AddTranslationsDialog.d.ts +19 -0
- package/lib/realm-settings/user-profile/attribute/AddValidatorDialog.d.ts +8 -0
- package/lib/realm-settings/user-profile/attribute/AttributeAnnotations.d.ts +1 -0
- package/lib/realm-settings/user-profile/attribute/AttributeGeneralSettings.d.ts +14 -0
- package/lib/realm-settings/user-profile/attribute/AttributePermission.d.ts +1 -0
- package/lib/realm-settings/user-profile/attribute/AttributeValidations.d.ts +1 -0
- package/lib/realm-settings/user-profile/attribute/ValidatorSelect.d.ts +7 -0
- package/lib/robots.txt +3 -0
- package/lib/root/AuthWall.d.ts +1 -0
- package/lib/routes.d.ts +15 -0
- package/lib/sessions/RevocationModal.d.ts +6 -0
- package/lib/sessions/SessionsSection.d.ts +1 -0
- package/lib/sessions/SessionsTable.d.ts +14 -0
- package/lib/sessions/routes/Sessions.d.ts +7 -0
- package/lib/sessions/routes.d.ts +3 -0
- package/lib/style.css +1 -0
- package/lib/user/CreateUser.d.ts +1 -0
- package/lib/user/EditUser.d.ts +1 -0
- package/lib/user/FederatedUserLink.d.ts +6 -0
- package/lib/user/Organizations.d.ts +1 -0
- package/lib/user/UserAttributes.d.ts +10 -0
- package/lib/user/UserConsents.d.ts +1 -0
- package/lib/user/UserCredentials.d.ts +7 -0
- package/lib/user/UserForm.d.ts +21 -0
- package/lib/user/UserGroups.d.ts +6 -0
- package/lib/user/UserIdPModal.d.ts +8 -0
- package/lib/user/UserIdentityProviderLinks.d.ts +5 -0
- package/lib/user/UserRoleMapping.d.ts +6 -0
- package/lib/user/UserSessions.d.ts +1 -0
- package/lib/user/UsersSection.d.ts +1 -0
- package/lib/user/details/SearchFilter.d.ts +9 -0
- package/lib/user/form-state.d.ts +14 -0
- package/lib/user/routes/AddUser.d.ts +7 -0
- package/lib/user/routes/User.d.ts +10 -0
- package/lib/user/routes/Users.d.ts +10 -0
- package/lib/user/routes.d.ts +3 -0
- package/lib/user/user-credentials/CredentialDataDialog.d.ts +6 -0
- package/lib/user/user-credentials/CredentialRow.d.ts +10 -0
- package/lib/user/user-credentials/InlineLabelEdit.d.ts +9 -0
- package/lib/user/user-credentials/LifespanField.d.ts +1 -0
- package/lib/user/user-credentials/RequiredActionMultiSelect.d.ts +7 -0
- package/lib/user/user-credentials/ResetCredentialDialog.d.ts +6 -0
- package/lib/user/user-credentials/ResetPasswordDialog.d.ts +15 -0
- package/lib/user/utils/user-profile.d.ts +2 -0
- package/lib/user/utils.d.ts +1 -0
- package/lib/user-federation/CreateUserFederationLdapSettings.d.ts +1 -0
- package/lib/user-federation/ManagePriorityDialog.d.ts +7 -0
- package/lib/user-federation/UserFederationKerberosSettings.d.ts +1 -0
- package/lib/user-federation/UserFederationKerberosWizard.d.ts +1 -0
- package/lib/user-federation/UserFederationLdapForm.d.ts +13 -0
- package/lib/user-federation/UserFederationLdapSettings.d.ts +1 -0
- package/lib/user-federation/UserFederationLdapWizard.d.ts +1 -0
- package/lib/user-federation/UserFederationSection.d.ts +1 -0
- package/lib/user-federation/custom/CustomProviderSettings.d.ts +1 -0
- package/lib/user-federation/custom/SyncSettings.d.ts +1 -0
- package/lib/user-federation/kerberos/KerberosSettingsRequired.d.ts +7 -0
- package/lib/user-federation/ldap/LdapSettingsAdvanced.d.ts +8 -0
- package/lib/user-federation/ldap/LdapSettingsConnection.d.ts +10 -0
- package/lib/user-federation/ldap/LdapSettingsGeneral.d.ts +9 -0
- package/lib/user-federation/ldap/LdapSettingsKerberosIntegration.d.ts +7 -0
- package/lib/user-federation/ldap/LdapSettingsSearching.d.ts +7 -0
- package/lib/user-federation/ldap/LdapSettingsSynchronization.d.ts +7 -0
- package/lib/user-federation/ldap/mappers/LdapMapperDetails.d.ts +1 -0
- package/lib/user-federation/ldap/mappers/LdapMapperList.d.ts +6 -0
- package/lib/user-federation/routes/CustomUserFederation.d.ts +9 -0
- package/lib/user-federation/routes/NewCustomUserFederation.d.ts +8 -0
- package/lib/user-federation/routes/NewKerberosUserFederation.d.ts +7 -0
- package/lib/user-federation/routes/NewLdapUserFederation.d.ts +7 -0
- package/lib/user-federation/routes/UserFederation.d.ts +7 -0
- package/lib/user-federation/routes/UserFederationKerberos.d.ts +8 -0
- package/lib/user-federation/routes/UserFederationLdap.d.ts +11 -0
- package/lib/user-federation/routes/UserFederationLdapMapper.d.ts +9 -0
- package/lib/user-federation/routes/UserFederationsKerberos.d.ts +7 -0
- package/lib/user-federation/routes/UserFederationsLdap.d.ts +7 -0
- package/lib/user-federation/routes.d.ts +3 -0
- package/lib/user-federation/shared/ExtendedHeader.d.ts +8 -0
- package/lib/user-federation/shared/Header.d.ts +9 -0
- package/lib/user-federation/shared/SettingsCache.d.ts +8 -0
- package/lib/util.d.ts +24 -0
- package/lib/utils/client-url.d.ts +3 -0
- package/lib/utils/generateEncodedPath.d.ts +23 -0
- package/lib/utils/getAuthorizationHeaders.d.ts +1 -0
- package/lib/utils/joinPath.d.ts +1 -0
- package/lib/utils/translationFormatter.d.ts +3 -0
- package/lib/utils/types.d.ts +4 -0
- package/lib/utils/useCurrentUser.d.ts +27 -0
- package/lib/utils/useFormatDate.d.ts +2 -0
- package/lib/utils/useIsFeatureEnabled.d.ts +14 -0
- package/lib/utils/useLocale.d.ts +1 -0
- package/lib/utils/useLocaleSort.d.ts +7 -0
- package/lib/utils/useParams.d.ts +1 -0
- package/lib/utils/useQueryPermission.d.ts +6 -0
- package/lib/utils/useToggle.d.ts +6 -0
- package/lib/utils/useUpdateEffect.d.ts +5 -0
- package/package.json +128 -0
@@ -0,0 +1,6 @@
|
|
1
|
+
import { AccessType } from '@keycloak/keycloak-admin-client/lib/defs/whoAmIRepresentation';
|
2
|
+
type ForbiddenSectionProps = {
|
3
|
+
permissionNeeded: AccessType | AccessType[];
|
4
|
+
};
|
5
|
+
export declare const ForbiddenSection: ({ permissionNeeded, }: ForbiddenSectionProps) => import("react/jsx-runtime").JSX.Element;
|
6
|
+
export {};
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import { jsxs as r, Fragment as v, jsx as a } from "react/jsx-runtime";
|
2
|
+
import { u as h, $ as z, a as b, b as f, V as p, P as S, c as A, F, bw as O, A as w, X as y, B as E, bE as x, bA as C, bC as P } from "./index-DXWy23Yd.js";
|
3
|
+
import { useTranslation as j } from "react-i18next";
|
4
|
+
import { useNavigate as k, Link as B } from "react-router-dom";
|
5
|
+
function $() {
|
6
|
+
const { adminClient: s } = h(), { addAlert: c, addError: d } = z(), { t } = j(), l = k(), { realm: e } = b(), i = f(), { handleSubmit: m, formState: g } = i;
|
7
|
+
return /* @__PURE__ */ r(v, { children: [
|
8
|
+
/* @__PURE__ */ a(p, { titleKey: "createOrganization" }),
|
9
|
+
/* @__PURE__ */ a(S, { variant: "light", children: /* @__PURE__ */ a(A, { role: "anyone", onSubmit: m(async (n) => {
|
10
|
+
try {
|
11
|
+
const o = C(n), { id: u } = await s.organizations.create(o);
|
12
|
+
c(t("organizationSaveSuccess")), l(P({ realm: e, id: u, tab: "settings" }));
|
13
|
+
} catch (o) {
|
14
|
+
d("organizationSaveError", o);
|
15
|
+
}
|
16
|
+
}), isHorizontal: !0, children: /* @__PURE__ */ r(F, { ...i, children: [
|
17
|
+
/* @__PURE__ */ a(O, {}),
|
18
|
+
/* @__PURE__ */ r(w, { children: [
|
19
|
+
/* @__PURE__ */ a(y, { formState: g, "data-testid": "save", children: t("save") }),
|
20
|
+
/* @__PURE__ */ a(
|
21
|
+
E,
|
22
|
+
{
|
23
|
+
"data-testid": "cancel",
|
24
|
+
variant: "link",
|
25
|
+
component: (n) => /* @__PURE__ */ a(B, { ...n, to: x({ realm: e }) }),
|
26
|
+
children: t("cancel")
|
27
|
+
}
|
28
|
+
)
|
29
|
+
] })
|
30
|
+
] }) }) })
|
31
|
+
] });
|
32
|
+
}
|
33
|
+
export {
|
34
|
+
$ as default
|
35
|
+
};
|
36
|
+
//# sourceMappingURL=NewOrganization-FsgFNfEd.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"NewOrganization-FsgFNfEd.js","sources":["../src/organizations/NewOrganization.tsx"],"sourcesContent":["import { FormSubmitButton } from \"@keycloak/keycloak-ui-shared\";\nimport { ActionGroup, Button, PageSection } from \"@patternfly/react-core\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { useAdminClient } from \"../admin-client\";\nimport { useAlerts } from \"@keycloak/keycloak-ui-shared\";\nimport { FormAccess } from \"../components/form/FormAccess\";\nimport { ViewHeader } from \"../components/view-header/ViewHeader\";\nimport { useRealm } from \"../context/realm-context/RealmContext\";\nimport {\n OrganizationForm,\n OrganizationFormType,\n convertToOrg,\n} from \"./OrganizationForm\";\nimport { toEditOrganization } from \"./routes/EditOrganization\";\nimport { toOrganizations } from \"./routes/Organizations\";\n\nexport default function NewOrganization() {\n const { adminClient } = useAdminClient();\n const { addAlert, addError } = useAlerts();\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { realm } = useRealm();\n const form = useForm();\n const { handleSubmit, formState } = form;\n\n const save = async (org: OrganizationFormType) => {\n try {\n const organization = convertToOrg(org);\n const { id } = await adminClient.organizations.create(organization);\n addAlert(t(\"organizationSaveSuccess\"));\n navigate(toEditOrganization({ realm, id, tab: \"settings\" }));\n } catch (error) {\n addError(\"organizationSaveError\", error);\n }\n };\n\n return (\n <>\n <ViewHeader titleKey=\"createOrganization\" />\n <PageSection variant=\"light\">\n <FormAccess role=\"anyone\" onSubmit={handleSubmit(save)} isHorizontal>\n <FormProvider {...form}>\n <OrganizationForm />\n <ActionGroup>\n <FormSubmitButton formState={formState} data-testid=\"save\">\n {t(\"save\")}\n </FormSubmitButton>\n <Button\n data-testid=\"cancel\"\n variant=\"link\"\n component={(props) => (\n <Link {...props} to={toOrganizations({ realm })} />\n )}\n >\n {t(\"cancel\")}\n </Button>\n </ActionGroup>\n </FormProvider>\n </FormAccess>\n </PageSection>\n </>\n );\n}\n"],"names":["NewOrganization","adminClient","useAdminClient","addAlert","addError","useAlerts","useTranslation","navigate","useNavigate","realm","useRealm","form","useForm","handleSubmit","formState","jsxs","Fragment","jsx","ViewHeader","PageSection","FormAccess","org","organization","convertToOrg","id","toEditOrganization","error","FormProvider","OrganizationForm","ActionGroup","FormSubmitButton","Button","props","Link","toOrganizations"],"mappings":";;;;AAkBA,SAAwBA,IAAkB;AAClC,QAAA,EAAE,aAAAC,MAAgBC,KAClB,EAAE,UAAAC,GAAU,UAAAC,EAAS,IAAIC,EAAU,GACnC,EAAE,MAAMC,KACRC,IAAWC,KACX,EAAE,OAAAC,MAAUC,KACZC,IAAOC,KACP,EAAE,cAAAC,GAAc,WAAAC,EAAc,IAAAH;AAapC,SAEI,gBAAAI,EAAAC,GAAA,EAAA,UAAA;AAAA,IAAC,gBAAAC,EAAAC,GAAA,EAAW,UAAS,qBAAqB,CAAA;AAAA,sBACzCC,GAAY,EAAA,SAAQ,SACnB,UAAA,gBAAAF,EAACG,KAAW,MAAK,UAAS,UAAUP,EAf7B,OAAOQ,MAA8B;AAC5C,UAAA;AACI,cAAAC,IAAeC,EAAaF,CAAG,GAC/B,EAAE,IAAAG,EAAG,IAAI,MAAMvB,EAAY,cAAc,OAAOqB,CAAY;AACzD,QAAAnB,EAAA,EAAE,yBAAyB,CAAC,GACrCI,EAASkB,EAAmB,EAAE,OAAAhB,GAAO,IAAAe,GAAI,KAAK,WAAY,CAAA,CAAC;AAAA,eACpDE,GAAO;AACd,QAAAtB,EAAS,yBAAyBsB,CAAK;AAAA,MACzC;AAAA,IAAA,CAOyD,GAAG,cAAY,IAClE,UAAC,gBAAAX,EAAAY,GAAA,EAAc,GAAGhB,GAChB,UAAA;AAAA,MAAA,gBAAAM,EAACW,GAAiB,EAAA;AAAA,wBACjBC,GACC,EAAA,UAAA;AAAA,QAAA,gBAAAZ,EAACa,KAAiB,WAAAhB,GAAsB,eAAY,QACjD,UAAA,EAAE,MAAM,GACX;AAAA,QACA,gBAAAG;AAAA,UAACc;AAAA,UAAA;AAAA,YACC,eAAY;AAAA,YACZ,SAAQ;AAAA,YACR,WAAW,CAACC,MACV,gBAAAf,EAACgB,GAAM,EAAA,GAAGD,GAAO,IAAIE,EAAgB,EAAE,OAAAzB,EAAM,CAAC,EAAG,CAAA;AAAA,YAGlD,YAAE,QAAQ;AAAA,UAAA;AAAA,QACb;AAAA,MAAA,GACF;AAAA,IAAA,EACF,CAAA,EACF,CAAA,GACF;AAAA,EACF,EAAA,CAAA;AAEJ;"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const Header: () => import("react/jsx-runtime").JSX.Element;
|
package/lib/PageNav.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export declare const PageNav: () => import("react/jsx-runtime").JSX.Element;
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const PageNotFoundSection: () => import("react/jsx-runtime").JSX.Element;
|
@@ -0,0 +1,413 @@
|
|
1
|
+
import { jsx as s, jsxs as v, Fragment as B } from "react/jsx-runtime";
|
2
|
+
import { u as G, b5 as _, m as K, b6 as J, b7 as W, b8 as N, aP as Y, b as X, b9 as Z, $ as ee, ba as se, aY as ae, g as H, d as k, bb as j, bc as ie, bd as oe, V as te, be as re, aG as ne, P as le, c as ce, F as de, Q as z, aJ as pe, bf as C, bg as P, bh as ue, bi as E, bj as $, bk as M, R as me, A as be, B as U, bl as fe } from "./index-DXWy23Yd.js";
|
3
|
+
import { useState as f, useRef as he } from "react";
|
4
|
+
import { useTranslation as Q } from "react-i18next";
|
5
|
+
import { useNavigate as ge, Link as ye } from "react-router-dom";
|
6
|
+
const Se = ({
|
7
|
+
clientId: c,
|
8
|
+
resourceId: e,
|
9
|
+
preSelected: u
|
10
|
+
}) => {
|
11
|
+
const { adminClient: h } = G(), { t: R } = Q(), {
|
12
|
+
control: F,
|
13
|
+
getValues: O,
|
14
|
+
setValue: A,
|
15
|
+
formState: { errors: r }
|
16
|
+
} = _(), [m, n] = f([]), [a, g] = f(
|
17
|
+
[]
|
18
|
+
), [p, b] = f(""), [y, D] = f(!1), S = he(!0), x = O("scopes"), q = (l) => l.map((t) => /* @__PURE__ */ s(Y, { value: t, children: t.name }, t.id));
|
19
|
+
return K(
|
20
|
+
async () => e ? (e && !S.current && A("scopes", []), S.current = !1, h.clients.listScopesByResource({
|
21
|
+
id: c,
|
22
|
+
resourceName: e
|
23
|
+
})) : h.clients.listAllScopes(
|
24
|
+
Object.assign(
|
25
|
+
{ id: c, deep: !1 },
|
26
|
+
p === "" ? null : { name: p }
|
27
|
+
)
|
28
|
+
),
|
29
|
+
(l) => {
|
30
|
+
n(l), p || g(
|
31
|
+
l.filter((t) => x?.includes(t.id))
|
32
|
+
);
|
33
|
+
},
|
34
|
+
[e, p]
|
35
|
+
), /* @__PURE__ */ s(
|
36
|
+
J,
|
37
|
+
{
|
38
|
+
name: "scopes",
|
39
|
+
defaultValue: u ? [u] : [],
|
40
|
+
control: F,
|
41
|
+
rules: { validate: (l) => l.length > 0 },
|
42
|
+
render: ({ field: l }) => /* @__PURE__ */ s(
|
43
|
+
W,
|
44
|
+
{
|
45
|
+
toggleId: "scopes",
|
46
|
+
variant: N.typeaheadMulti,
|
47
|
+
onToggle: (t) => D(t),
|
48
|
+
onFilter: (t) => (b(t), q(m)),
|
49
|
+
onClear: () => {
|
50
|
+
l.onChange([]), b("");
|
51
|
+
},
|
52
|
+
selections: a.map((t) => t.name),
|
53
|
+
onSelect: (t) => {
|
54
|
+
const T = typeof t == "string" ? a.find((d) => d.name === t) : t, w = a.find((d) => d.id === T.id) ? a.filter((d) => d.id !== T.id) : [...a, T];
|
55
|
+
l.onChange(w.map((d) => d.id)), g(w), b("");
|
56
|
+
},
|
57
|
+
isOpen: y,
|
58
|
+
"aria-labelledby": R("scopes"),
|
59
|
+
validated: r.scopes ? "error" : "default",
|
60
|
+
isDisabled: !!u,
|
61
|
+
typeAheadAriaLabel: R("scopes"),
|
62
|
+
children: q(m)
|
63
|
+
}
|
64
|
+
)
|
65
|
+
}
|
66
|
+
);
|
67
|
+
};
|
68
|
+
function Re() {
|
69
|
+
const { adminClient: c } = G(), { t: e } = Q(), u = X({
|
70
|
+
mode: "onChange"
|
71
|
+
}), {
|
72
|
+
control: h,
|
73
|
+
reset: R,
|
74
|
+
formState: { errors: F },
|
75
|
+
handleSubmit: O
|
76
|
+
} = u, A = ge(), { id: r, realm: m, permissionType: n, permissionId: a, selectedId: g } = Z(), { addAlert: p, addError: b } = ee(), [y, D] = f(), [S, x] = f(!1), { hasAccess: q } = se(), l = !q("manage-authorization");
|
77
|
+
K(
|
78
|
+
async () => {
|
79
|
+
if (!a)
|
80
|
+
return {};
|
81
|
+
const [i, o, L, V] = await Promise.all([
|
82
|
+
c.clients.findOnePermission({
|
83
|
+
id: r,
|
84
|
+
type: n,
|
85
|
+
permissionId: a
|
86
|
+
}),
|
87
|
+
c.clients.getAssociatedResources({
|
88
|
+
id: r,
|
89
|
+
permissionId: a
|
90
|
+
}),
|
91
|
+
c.clients.getAssociatedPolicies({
|
92
|
+
id: r,
|
93
|
+
permissionId: a
|
94
|
+
}),
|
95
|
+
c.clients.getAssociatedScopes({
|
96
|
+
id: r,
|
97
|
+
permissionId: a
|
98
|
+
})
|
99
|
+
]);
|
100
|
+
if (!i)
|
101
|
+
throw new Error(e("notFound"));
|
102
|
+
return {
|
103
|
+
permission: i,
|
104
|
+
resources: o.map((I) => I._id),
|
105
|
+
policies: L.map((I) => I.id),
|
106
|
+
scopes: V.map((I) => I.id)
|
107
|
+
};
|
108
|
+
},
|
109
|
+
({ permission: i, resources: o, policies: L, scopes: V }) => {
|
110
|
+
R({ ...i, resources: o, policies: L, scopes: V }), i && "resourceType" in i && x(
|
111
|
+
!!i.resourceType
|
112
|
+
), D({ ...i, resources: o, policies: L });
|
113
|
+
},
|
114
|
+
[]
|
115
|
+
);
|
116
|
+
const t = async (i) => {
|
117
|
+
try {
|
118
|
+
if (a)
|
119
|
+
await c.clients.updatePermission(
|
120
|
+
{ id: r, type: n, permissionId: a },
|
121
|
+
i
|
122
|
+
);
|
123
|
+
else {
|
124
|
+
const o = await c.clients.createPermission(
|
125
|
+
{ id: r, type: n },
|
126
|
+
i
|
127
|
+
);
|
128
|
+
D(o), A(
|
129
|
+
fe({
|
130
|
+
realm: m,
|
131
|
+
id: r,
|
132
|
+
permissionType: n,
|
133
|
+
permissionId: o.id
|
134
|
+
})
|
135
|
+
);
|
136
|
+
}
|
137
|
+
p(
|
138
|
+
e((a ? "update" : "create") + "PermissionSuccess"),
|
139
|
+
k.success
|
140
|
+
);
|
141
|
+
} catch (o) {
|
142
|
+
b("permissionSaveError", o);
|
143
|
+
}
|
144
|
+
}, [T, w] = ae({
|
145
|
+
titleKey: "deletePermission",
|
146
|
+
messageKey: e("deletePermissionConfirm", {
|
147
|
+
permission: y?.name
|
148
|
+
}),
|
149
|
+
continueButtonVariant: H.danger,
|
150
|
+
continueButtonLabel: "confirm",
|
151
|
+
onConfirm: async () => {
|
152
|
+
try {
|
153
|
+
await c.clients.delPermission({
|
154
|
+
id: r,
|
155
|
+
type: n,
|
156
|
+
permissionId: a
|
157
|
+
}), p(e("permissionDeletedSuccess"), k.success), A(
|
158
|
+
j({ realm: m, clientId: r, tab: "permissions" })
|
159
|
+
);
|
160
|
+
} catch (i) {
|
161
|
+
b("permissionDeletedError", i);
|
162
|
+
}
|
163
|
+
}
|
164
|
+
}), d = ie({
|
165
|
+
control: h,
|
166
|
+
name: "resources",
|
167
|
+
defaultValue: []
|
168
|
+
});
|
169
|
+
return y ? /* @__PURE__ */ v(B, { children: [
|
170
|
+
/* @__PURE__ */ s(w, {}),
|
171
|
+
/* @__PURE__ */ s(
|
172
|
+
te,
|
173
|
+
{
|
174
|
+
titleKey: a ? y.name : `create${re(n)}BasedPermission`,
|
175
|
+
dropdownItems: a ? [
|
176
|
+
/* @__PURE__ */ s(
|
177
|
+
ne,
|
178
|
+
{
|
179
|
+
"data-testid": "delete-resource",
|
180
|
+
isDisabled: l,
|
181
|
+
onClick: () => T(),
|
182
|
+
children: e("delete")
|
183
|
+
},
|
184
|
+
"delete"
|
185
|
+
)
|
186
|
+
] : void 0
|
187
|
+
}
|
188
|
+
),
|
189
|
+
/* @__PURE__ */ s(le, { variant: "light", children: /* @__PURE__ */ s(
|
190
|
+
ce,
|
191
|
+
{
|
192
|
+
isHorizontal: !0,
|
193
|
+
role: "manage-authorization",
|
194
|
+
onSubmit: O(t),
|
195
|
+
children: /* @__PURE__ */ v(de, { ...u, children: [
|
196
|
+
/* @__PURE__ */ s(
|
197
|
+
z,
|
198
|
+
{
|
199
|
+
name: "name",
|
200
|
+
label: e("name"),
|
201
|
+
labelIcon: e("permissionName"),
|
202
|
+
rules: {
|
203
|
+
required: e("required")
|
204
|
+
}
|
205
|
+
}
|
206
|
+
),
|
207
|
+
/* @__PURE__ */ s(
|
208
|
+
pe,
|
209
|
+
{
|
210
|
+
name: "description",
|
211
|
+
label: e("description"),
|
212
|
+
labelIcon: e("permissionDescription"),
|
213
|
+
rules: {
|
214
|
+
maxLength: {
|
215
|
+
value: 255,
|
216
|
+
message: e("maxLength", { length: 255 })
|
217
|
+
}
|
218
|
+
}
|
219
|
+
}
|
220
|
+
),
|
221
|
+
/* @__PURE__ */ s(
|
222
|
+
C,
|
223
|
+
{
|
224
|
+
label: e("applyToResourceTypeFlag"),
|
225
|
+
fieldId: "applyToResourceTypeFlag",
|
226
|
+
labelIcon: /* @__PURE__ */ s(
|
227
|
+
P,
|
228
|
+
{
|
229
|
+
helpText: e("applyToResourceTypeFlagHelp"),
|
230
|
+
fieldLabelId: "applyToResourceTypeFlag"
|
231
|
+
}
|
232
|
+
),
|
233
|
+
children: /* @__PURE__ */ s(
|
234
|
+
ue,
|
235
|
+
{
|
236
|
+
id: "applyToResourceTypeFlag",
|
237
|
+
name: "applyToResourceTypeFlag",
|
238
|
+
label: e("on"),
|
239
|
+
labelOff: e("off"),
|
240
|
+
isChecked: S,
|
241
|
+
onChange: (i, o) => x(o),
|
242
|
+
"aria-label": e("applyToResourceTypeFlag")
|
243
|
+
}
|
244
|
+
)
|
245
|
+
}
|
246
|
+
),
|
247
|
+
S ? /* @__PURE__ */ s(
|
248
|
+
z,
|
249
|
+
{
|
250
|
+
name: "resourceType",
|
251
|
+
label: e("resourceType"),
|
252
|
+
labelIcon: e("resourceTypeHelp"),
|
253
|
+
rules: {
|
254
|
+
required: {
|
255
|
+
value: n === "scope",
|
256
|
+
message: e("required")
|
257
|
+
}
|
258
|
+
}
|
259
|
+
}
|
260
|
+
) : /* @__PURE__ */ v(
|
261
|
+
C,
|
262
|
+
{
|
263
|
+
label: e("resource"),
|
264
|
+
fieldId: "resources",
|
265
|
+
labelIcon: /* @__PURE__ */ s(
|
266
|
+
P,
|
267
|
+
{
|
268
|
+
helpText: e("permissionResources"),
|
269
|
+
fieldLabelId: "resources"
|
270
|
+
}
|
271
|
+
),
|
272
|
+
isRequired: n !== "scope",
|
273
|
+
children: [
|
274
|
+
/* @__PURE__ */ s(
|
275
|
+
E,
|
276
|
+
{
|
277
|
+
name: "resources",
|
278
|
+
clientId: r,
|
279
|
+
permissionId: a,
|
280
|
+
preSelected: n === "scope" ? void 0 : g,
|
281
|
+
variant: n === "scope" ? N.typeahead : N.typeaheadMulti,
|
282
|
+
isRequired: n !== "scope"
|
283
|
+
}
|
284
|
+
),
|
285
|
+
F.resources && /* @__PURE__ */ s($, { message: e("required") })
|
286
|
+
]
|
287
|
+
}
|
288
|
+
),
|
289
|
+
n === "scope" && /* @__PURE__ */ v(
|
290
|
+
C,
|
291
|
+
{
|
292
|
+
label: e("authorizationScopes"),
|
293
|
+
fieldId: "scopes",
|
294
|
+
labelIcon: /* @__PURE__ */ s(
|
295
|
+
P,
|
296
|
+
{
|
297
|
+
helpText: e("permissionScopesHelp"),
|
298
|
+
fieldLabelId: "scopesSelect"
|
299
|
+
}
|
300
|
+
),
|
301
|
+
isRequired: !0,
|
302
|
+
children: [
|
303
|
+
/* @__PURE__ */ s(
|
304
|
+
Se,
|
305
|
+
{
|
306
|
+
clientId: r,
|
307
|
+
resourceId: d?.[0],
|
308
|
+
preSelected: g
|
309
|
+
}
|
310
|
+
),
|
311
|
+
F.scopes && /* @__PURE__ */ s($, { message: e("required") })
|
312
|
+
]
|
313
|
+
}
|
314
|
+
),
|
315
|
+
/* @__PURE__ */ s(
|
316
|
+
C,
|
317
|
+
{
|
318
|
+
label: e("policies"),
|
319
|
+
fieldId: "policies",
|
320
|
+
labelIcon: /* @__PURE__ */ s(
|
321
|
+
P,
|
322
|
+
{
|
323
|
+
helpText: e("permissionPoliciesHelp"),
|
324
|
+
fieldLabelId: "policies"
|
325
|
+
}
|
326
|
+
),
|
327
|
+
children: /* @__PURE__ */ s(
|
328
|
+
E,
|
329
|
+
{
|
330
|
+
name: "policies",
|
331
|
+
clientId: r,
|
332
|
+
permissionId: a
|
333
|
+
}
|
334
|
+
)
|
335
|
+
}
|
336
|
+
),
|
337
|
+
/* @__PURE__ */ s(
|
338
|
+
C,
|
339
|
+
{
|
340
|
+
label: e("decisionStrategy"),
|
341
|
+
labelIcon: /* @__PURE__ */ s(
|
342
|
+
P,
|
343
|
+
{
|
344
|
+
helpText: e("permissionDecisionStrategyHelp"),
|
345
|
+
fieldLabelId: "decisionStrategy"
|
346
|
+
}
|
347
|
+
),
|
348
|
+
fieldId: "policyEnforcementMode",
|
349
|
+
hasNoPaddingTop: !0,
|
350
|
+
children: /* @__PURE__ */ s(
|
351
|
+
J,
|
352
|
+
{
|
353
|
+
name: "decisionStrategy",
|
354
|
+
"data-testid": "decisionStrategy",
|
355
|
+
defaultValue: M.UNANIMOUS,
|
356
|
+
control: h,
|
357
|
+
render: ({ field: i }) => /* @__PURE__ */ s(B, { children: Object.values(M).map((o) => /* @__PURE__ */ s(
|
358
|
+
me,
|
359
|
+
{
|
360
|
+
id: o,
|
361
|
+
"data-testid": o,
|
362
|
+
isChecked: i.value === o,
|
363
|
+
isDisabled: l,
|
364
|
+
name: "decisionStrategies",
|
365
|
+
onChange: () => i.onChange(o),
|
366
|
+
label: e(`decisionStrategies.${o}`),
|
367
|
+
className: "pf-v5-u-mb-md"
|
368
|
+
},
|
369
|
+
o
|
370
|
+
)) })
|
371
|
+
}
|
372
|
+
)
|
373
|
+
}
|
374
|
+
),
|
375
|
+
/* @__PURE__ */ s(be, { children: /* @__PURE__ */ v("div", { className: "pf-v5-u-mt-md", children: [
|
376
|
+
/* @__PURE__ */ s(
|
377
|
+
U,
|
378
|
+
{
|
379
|
+
variant: H.primary,
|
380
|
+
type: "submit",
|
381
|
+
"data-testid": "save",
|
382
|
+
children: e("save")
|
383
|
+
}
|
384
|
+
),
|
385
|
+
/* @__PURE__ */ s(
|
386
|
+
U,
|
387
|
+
{
|
388
|
+
variant: "link",
|
389
|
+
"data-testid": "cancel",
|
390
|
+
component: (i) => /* @__PURE__ */ s(
|
391
|
+
ye,
|
392
|
+
{
|
393
|
+
...i,
|
394
|
+
to: j({
|
395
|
+
realm: m,
|
396
|
+
clientId: r,
|
397
|
+
tab: "permissions"
|
398
|
+
})
|
399
|
+
}
|
400
|
+
),
|
401
|
+
children: e("cancel")
|
402
|
+
}
|
403
|
+
)
|
404
|
+
] }) })
|
405
|
+
] })
|
406
|
+
}
|
407
|
+
) })
|
408
|
+
] }) : /* @__PURE__ */ s(oe, {});
|
409
|
+
}
|
410
|
+
export {
|
411
|
+
Re as default
|
412
|
+
};
|
413
|
+
//# sourceMappingURL=PermissionDetails-9Ej9jFpb.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"PermissionDetails-9Ej9jFpb.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 {\n KeycloakSelect,\n SelectVariant,\n useFetch,\n} from \"@keycloak/keycloak-ui-shared\";\nimport { SelectOption } from \"@patternfly/react-core\";\nimport { useRef, useState } from \"react\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { useAdminClient } from \"../../admin-client\";\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 { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n\n const {\n control,\n getValues,\n setValue,\n formState: { errors },\n } = useFormContext();\n\n const [scopes, setScopes] = useState<ScopeRepresentation[]>([]);\n const [selectedScopes, setSelectedScopes] = useState<ScopeRepresentation[]>(\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 <SelectOption key={scope.id} value={scope}>\n {scope.name}\n </SelectOption>\n ));\n\n useFetch(\n async (): Promise<ScopeRepresentation[]> => {\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 <Controller\n name=\"scopes\"\n defaultValue={preSelected ? [preSelected] : []}\n control={control}\n rules={{ validate: (value) => value.length > 0 }}\n render={({ field }) => (\n <KeycloakSelect\n toggleId=\"scopes\"\n variant={SelectVariant.typeaheadMulti}\n onToggle={(val) => setOpen(val)}\n onFilter={(filter) => {\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 </KeycloakSelect>\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 FormErrorText,\n HelpItem,\n SelectVariant,\n TextAreaControl,\n TextControl,\n useAlerts,\n useFetch,\n} from \"@keycloak/keycloak-ui-shared\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n ButtonVariant,\n DropdownItem,\n FormGroup,\n PageSection,\n Radio,\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 { useAdminClient } from \"../../admin-client\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { KeycloakSpinner } from \"@keycloak/keycloak-ui-shared\";\nimport { ViewHeader } from \"../../components/view-header/ViewHeader\";\nimport { useAccess } from \"../../context/access/Access\";\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 { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n\n const form = useForm<FormFields>({\n mode: \"onChange\",\n });\n const {\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<PolicyRepresentation>();\n const [applyToResourceTypeFlag, setApplyToResourceTypeFlag] = useState(false);\n const { hasAccess } = useAccess();\n\n const isDisabled = !hasAccess(\"manage-authorization\");\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(\"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 setPermission(result);\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(\"permissionSaveError\", error);\n }\n };\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"deletePermission\",\n messageKey: t(\"deletePermissionConfirm\", {\n permission: permission?.name,\n }),\n continueButtonVariant: ButtonVariant.danger,\n continueButtonLabel: \"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(\"permissionDeletedError\", error);\n }\n },\n });\n\n const resourcesIds = useWatch({\n control,\n name: \"resources\",\n defaultValue: [],\n });\n\n if (!permission) {\n return <KeycloakSpinner />;\n }\n\n return (\n <>\n <DeleteConfirm />\n <ViewHeader\n titleKey={\n permissionId\n ? permission.name!\n : `create${toUpperCase(permissionType)}BasedPermission`\n }\n dropdownItems={\n permissionId\n ? [\n <DropdownItem\n key=\"delete\"\n data-testid=\"delete-resource\"\n isDisabled={isDisabled}\n onClick={() => toggleDeleteDialog()}\n >\n {t(\"delete\")}\n </DropdownItem>,\n ]\n : undefined\n }\n />\n <PageSection variant=\"light\">\n <FormAccess\n isHorizontal\n role=\"manage-authorization\"\n onSubmit={handleSubmit(save)}\n >\n <FormProvider {...form}>\n <TextControl\n name=\"name\"\n label={t(\"name\")}\n labelIcon={t(\"permissionName\")}\n rules={{\n required: t(\"required\"),\n }}\n />\n <TextAreaControl\n name=\"description\"\n label={t(\"description\")}\n labelIcon={t(\"permissionDescription\")}\n rules={{\n maxLength: {\n value: 255,\n message: t(\"maxLength\", { length: 255 }),\n },\n }}\n />\n <FormGroup\n label={t(\"applyToResourceTypeFlag\")}\n fieldId=\"applyToResourceTypeFlag\"\n labelIcon={\n <HelpItem\n helpText={t(\"applyToResourceTypeFlagHelp\")}\n fieldLabelId=\"applyToResourceTypeFlag\"\n />\n }\n >\n <Switch\n id=\"applyToResourceTypeFlag\"\n name=\"applyToResourceTypeFlag\"\n label={t(\"on\")}\n labelOff={t(\"off\")}\n isChecked={applyToResourceTypeFlag}\n onChange={(_event, val) => setApplyToResourceTypeFlag(val)}\n aria-label={t(\"applyToResourceTypeFlag\")}\n />\n </FormGroup>\n {applyToResourceTypeFlag ? (\n <TextControl\n name=\"resourceType\"\n label={t(\"resourceType\")}\n labelIcon={t(\"resourceTypeHelp\")}\n rules={{\n required: {\n value: permissionType === \"scope\" ? true : false,\n message: t(\"required\"),\n },\n }}\n />\n ) : (\n <FormGroup\n label={t(\"resource\")}\n fieldId=\"resources\"\n labelIcon={\n <HelpItem\n helpText={t(\"permissionResources\")}\n fieldLabelId=\"resources\"\n />\n }\n isRequired={permissionType !== \"scope\"}\n >\n <ResourcesPolicySelect\n name=\"resources\"\n clientId={id}\n permissionId={permissionId}\n preSelected={\n permissionType === \"scope\" ? undefined : selectedId\n }\n variant={\n permissionType === \"scope\"\n ? SelectVariant.typeahead\n : SelectVariant.typeaheadMulti\n }\n isRequired={permissionType !== \"scope\"}\n />\n {errors.resources && <FormErrorText message={t(\"required\")} />}\n </FormGroup>\n )}\n {permissionType === \"scope\" && (\n <FormGroup\n label={t(\"authorizationScopes\")}\n fieldId=\"scopes\"\n labelIcon={\n <HelpItem\n helpText={t(\"permissionScopesHelp\")}\n fieldLabelId=\"scopesSelect\"\n />\n }\n isRequired\n >\n <ScopeSelect\n clientId={id}\n resourceId={resourcesIds?.[0]}\n preSelected={selectedId}\n />\n {errors.scopes && <FormErrorText message={t(\"required\")} />}\n </FormGroup>\n )}\n <FormGroup\n label={t(\"policies\")}\n fieldId=\"policies\"\n labelIcon={\n <HelpItem\n helpText={t(\"permissionPoliciesHelp\")}\n fieldLabelId=\"policies\"\n />\n }\n >\n <ResourcesPolicySelect\n name=\"policies\"\n clientId={id}\n permissionId={permissionId}\n />\n </FormGroup>\n <FormGroup\n label={t(\"decisionStrategy\")}\n labelIcon={\n <HelpItem\n helpText={t(\"permissionDecisionStrategyHelp\")}\n fieldLabelId=\"decisionStrategy\"\n />\n }\n fieldId=\"policyEnforcementMode\"\n hasNoPaddingTop\n >\n <Controller\n name=\"decisionStrategy\"\n data-testid=\"decisionStrategy\"\n defaultValue={DecisionStrategy.UNANIMOUS}\n control={control}\n render={({ field }) => (\n <>\n {Object.values(DecisionStrategy).map((strategy) => (\n <Radio\n id={strategy}\n key={strategy}\n data-testid={strategy}\n isChecked={field.value === strategy}\n isDisabled={isDisabled}\n name=\"decisionStrategies\"\n onChange={() => field.onChange(strategy)}\n label={t(`decisionStrategies.${strategy}`)}\n className=\"pf-v5-u-mb-md\"\n />\n ))}\n </>\n )}\n />\n </FormGroup>\n <ActionGroup>\n <div className=\"pf-v5-u-mt-md\">\n <Button\n variant={ButtonVariant.primary}\n type=\"submit\"\n data-testid=\"save\"\n >\n {t(\"save\")}\n </Button>\n\n <Button\n variant=\"link\"\n data-testid=\"cancel\"\n component={(props) => (\n <Link\n {...props}\n to={toAuthorizationTab({\n realm,\n clientId: id,\n tab: \"permissions\",\n })}\n ></Link>\n )}\n >\n {t(\"cancel\")}\n </Button>\n </div>\n </ActionGroup>\n </FormProvider>\n </FormAccess>\n </PageSection>\n </>\n );\n}\n"],"names":["ScopeSelect","clientId","resourceId","preSelected","adminClient","useAdminClient","t","useTranslation","control","getValues","setValue","errors","useFormContext","scopes","setScopes","useState","selectedScopes","setSelectedScopes","search","setSearch","open","setOpen","firstUpdate","useRef","values","toSelectOptions","scope","jsx","SelectOption","useFetch","s","Controller","value","field","KeycloakSelect","SelectVariant","val","filter","selectedValue","option","changedValue","p","PermissionDetails","form","useForm","reset","handleSubmit","navigate","useNavigate","id","realm","permissionType","permissionId","selectedId","useParams","addAlert","addError","useAlerts","permission","setPermission","applyToResourceTypeFlag","setApplyToResourceTypeFlag","hasAccess","useAccess","isDisabled","resources","policies","r","save","result","toPermissionDetails","AlertVariant","error","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","ButtonVariant","toAuthorizationTab","resourcesIds","useWatch","jsxs","Fragment","ViewHeader","toUpperCase","DropdownItem","PageSection","FormAccess","FormProvider","TextControl","TextAreaControl","FormGroup","HelpItem","Switch","_event","ResourcesPolicySelect","FormErrorText","DecisionStrategy","strategy","Radio","ActionGroup","Button","props","Link","KeycloakSpinner"],"mappings":"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"}
|