From 9b79bc36a8daefb53d3b53bdfb17a286250be279 Mon Sep 17 00:00:00 2001 From: Wroud Date: Tue, 9 Nov 2021 11:21:11 +0300 Subject: [PATCH 1/6] fix: CB-1355 cached data resource includes loading --- .../src/UserInfoResource.ts | 10 ++++++++-- .../src/Resource/CachedDataResource.ts | 4 ++-- .../src/UserProfileForm/UserProfileForm.tsx | 9 ++++++++- .../src/UserProfileService.ts | 18 ++++++++++++++++-- 4 files changed, 34 insertions(+), 7 deletions(-) diff --git a/webapp/packages/core-authentication/src/UserInfoResource.ts b/webapp/packages/core-authentication/src/UserInfoResource.ts index 82f640b591..a387f4f1d8 100644 --- a/webapp/packages/core-authentication/src/UserInfoResource.ts +++ b/webapp/packages/core-authentication/src/UserInfoResource.ts @@ -31,7 +31,7 @@ UserInfoIncludes sessionResource: SessionResource, private sessionDataResource: SessionDataResource ) { - super(null); + super(null, ['customIncludeOriginDetails']); this.userChange = new SyncExecutor(); this.sync(sessionResource); @@ -80,12 +80,12 @@ UserInfoIncludes customIncludeOriginDetails: true, }); + this.resetIncludes(); if (this.data === null || link) { this.setData(await this.loader()); } else { this.data.authTokens.push(authToken as UserAuthToken); } - this.resetIncludes(); }); this.sessionDataResource.markOutdated(); @@ -133,4 +133,10 @@ UserInfoIncludes const metadata = this.getMetadata(); metadata.includes = [...this.defaultIncludes]; } + + getIncludes(key: void): string[] { + key = this.transformParam(key); + const metadata = this.getMetadata(key); + return metadata.includes; + } } diff --git a/webapp/packages/core-sdk/src/Resource/CachedDataResource.ts b/webapp/packages/core-sdk/src/Resource/CachedDataResource.ts index 2306e7d2b8..ce84d2e523 100644 --- a/webapp/packages/core-sdk/src/Resource/CachedDataResource.ts +++ b/webapp/packages/core-sdk/src/Resource/CachedDataResource.ts @@ -44,8 +44,8 @@ export abstract class CachedDataResource< > { protected loaded: boolean; - constructor(defaultValue: TData) { - super(defaultValue, []); + constructor(defaultValue: TData, defaultIncludes: ContextArg) { + super(defaultValue, defaultIncludes as any as string[]); this.loaded = false; diff --git a/webapp/packages/plugin-user-profile/src/UserProfileForm/UserProfileForm.tsx b/webapp/packages/plugin-user-profile/src/UserProfileForm/UserProfileForm.tsx index 8054ef0597..41f7ddda2e 100644 --- a/webapp/packages/plugin-user-profile/src/UserProfileForm/UserProfileForm.tsx +++ b/webapp/packages/plugin-user-profile/src/UserProfileForm/UserProfileForm.tsx @@ -7,6 +7,7 @@ */ import { observer } from 'mobx-react-lite'; +import styled, { css } from 'reshadow'; import { UserInfoResource } from '@cloudbeaver/core-authentication'; import { Loader, useDataResource } from '@cloudbeaver/core-blocks'; @@ -15,6 +16,12 @@ import { useService } from '@cloudbeaver/core-di'; import { UserProfileService } from '../UserProfileService'; import { UserForm } from './UserForm'; +const style = css` + Loader { + height: 100%; + } +`; + export const UserProfileForm = observer(function UserProfileForm() { const userProfileService = useService(UserProfileService); const userInfo = useDataResource(UserProfileForm, UserInfoResource, { @@ -26,7 +33,7 @@ export const UserProfileForm = observer(function UserProfileForm() { return null; } - return ( + return styled(style)( {() => userInfo.data && } diff --git a/webapp/packages/plugin-user-profile/src/UserProfileService.ts b/webapp/packages/plugin-user-profile/src/UserProfileService.ts index f37aca167e..47234fe259 100644 --- a/webapp/packages/plugin-user-profile/src/UserProfileService.ts +++ b/webapp/packages/plugin-user-profile/src/UserProfileService.ts @@ -8,6 +8,7 @@ import { action, makeObservable, observable } from 'mobx'; +import { UserInfoResource } from '@cloudbeaver/core-authentication'; import { injectable } from '@cloudbeaver/core-di'; import { CommonDialogService, ConfirmationDialog, DialogueStateResult } from '@cloudbeaver/core-dialogs'; import { ExecutorInterrupter, IExecutorHandler } from '@cloudbeaver/core-executor'; @@ -26,15 +27,18 @@ export class UserProfileService { constructor( private readonly commonDialogService: CommonDialogService, private readonly optionsPanelService: OptionsPanelService, + private readonly userInfoResource: UserInfoResource, ) { + this.formState = null; + this.optionsPanelService.closeTask.addHandler(this.closeHandler); + this.userInfoResource.onDataUpdate.addHandler(this.userUpdateHandler.bind(this)); + makeObservable(this, { formState: observable.ref, change: action, open: action, close: action, }); - this.formState = null; - this.optionsPanelService.closeTask.addHandler(this.closeHandler); } change(): void { @@ -89,6 +93,16 @@ export class UserProfileService { } }; + private userUpdateHandler() { + if (!this.formState || !this.optionsPanelService.isOpen(formGetter)) { + return; + } + + if (this.userInfoResource.data === null) { + this.clearFormState(); + } + } + private clearFormState() { this.formState?.dispose(); this.formState = null; From a20457dabb81b52e1e4c425cf4a303f77fc18e20 Mon Sep 17 00:00:00 2001 From: Wroud Date: Tue, 9 Nov 2021 11:51:17 +0300 Subject: [PATCH 2/6] fix(core-connections): CB-1419 drivers permissions --- webapp/packages/core-connections/src/DBDriverResource.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/webapp/packages/core-connections/src/DBDriverResource.ts b/webapp/packages/core-connections/src/DBDriverResource.ts index 79ab63cc04..e6e4ec67b1 100644 --- a/webapp/packages/core-connections/src/DBDriverResource.ts +++ b/webapp/packages/core-connections/src/DBDriverResource.ts @@ -7,6 +7,7 @@ */ import { injectable } from '@cloudbeaver/core-di'; +import { EPermission, PermissionsResource } from '@cloudbeaver/core-root'; import { GraphQLService, CachedMapResource, @@ -22,8 +23,12 @@ export type DBDriver = DatabaseDriverFragment; @injectable() export class DBDriverResource extends CachedMapResource { - constructor(private graphQLService: GraphQLService) { + constructor( + private graphQLService: GraphQLService, + permissionsResource: PermissionsResource, + ) { super(); + permissionsResource.require(this, EPermission.public); } async loadAll(): Promise> { From 33024b7786e0987036ba66f9c2cba8539bfe352f Mon Sep 17 00:00:00 2001 From: Wroud Date: Tue, 9 Nov 2021 13:03:34 +0300 Subject: [PATCH 3/6] refactor: CB-1394 extract administration UI parts to separate plugins --- .../.gitignore | 17 +++ .../package.json | 43 +++++++ .../AuthConfigurationForm.tsx | 0 .../AuthConfigurationFormBaseActions.tsx | 0 .../AuthConfigurationFormService.ts | 0 .../AuthConfigurationFormState.ts | 0 .../AuthConfigurationsAdministration.tsx | 0 ...hConfigurationsAdministrationNavService.ts | 0 ...AuthConfigurationsAdministrationService.ts | 0 .../AuthConfigurationsDrawerItem.tsx | 0 .../AuthConfiguration.tsx | 0 .../AuthConfigurationEdit.tsx | 0 .../AuthConfigurationsTable.tsx | 0 .../useConfigurationsTable.tsx | 0 .../Contexts/authConfigurationContext.ts | 0 .../authConfigurationFormConfigureContext.ts | 0 .../authConfigurationFormStateContext.ts | 0 .../CreateAuthConfiguration.tsx | 0 .../CreateAuthConfigurationService.ts | 0 .../IAuthConfigurationFormProps.ts | 0 .../IdentityProvidersServiceLink.tsx | 0 .../Options/AuthConfigurationOptions.tsx | 0 .../AuthConfigurationOptionsTabService.ts | 0 .../useAuthConfigurationFormState.ts | 0 .../Roles/Contexts/roleContext.ts | 0 .../Contexts/roleFormConfigureContext.ts | 0 .../Roles/Contexts/roleFormStateContext.ts | 0 .../src/Administration/Roles/CreateRole.tsx | 0 .../Administration/Roles/CreateRoleService.ts | 0 .../GrantedConnections/ConnectionList.tsx | 0 .../GrantedConnections/GrantedConnections.tsx | 0 .../GrantedConnectionsList.tsx | 0 .../GrantedConnectionsTabService.ts | 0 .../GrantedConnectionsTableHeader.tsx | 0 .../GrantedConnectionsTableInnerHeader.tsx | 0 .../GrantedConnectionsTableItem.tsx | 0 .../IGrantedConnectionsTabState.ts | 0 .../getFilteredConnections.ts | 0 .../useGrantedConnections.tsx | 0 .../Roles/GrantedUsers/GrantedUserList.tsx | 0 .../Roles/GrantedUsers/GrantedUsers.tsx | 0 .../GrantedUsers/GrantedUsersTabService.ts | 0 .../GrantedUsersTableHeader.tsx | 0 .../GrantedUsersTableInnerHeader.tsx | 0 .../GrantedUsers/GrantedUsersTableItem.tsx | 0 .../GrantedUsers/IGrantedUsersTabState.ts | 0 .../Roles/GrantedUsers/UserList.tsx | 0 .../Roles/GrantedUsers/getFilteredUsers.ts | 0 .../Roles/GrantedUsers/useGrantedUsers.tsx | 0 .../Administration/Roles/IRoleFormProps.ts | 0 .../Roles/Options/RoleOptions.tsx | 0 .../Roles/Options/RoleOptionsTabService.ts | 0 .../src/Administration/Roles/RoleForm.tsx | 0 .../Roles/RoleFormBaseActions.tsx | 0 .../Administration/Roles/RoleFormService.ts | 0 .../src/Administration/Roles/RoleFormState.ts | 0 .../Roles/RolesAdministration.tsx | 0 .../Roles/RolesAdministrationNavService.ts | 0 .../Roles/RolesAdministrationService.ts | 0 .../Administration/Roles/RolesDrawerItem.tsx | 0 .../Administration/Roles/RolesTable/Role.tsx | 0 .../Roles/RolesTable/RoleEdit.tsx | 0 .../Roles/RolesTable/RolesTable.tsx | 0 .../Roles/RolesTable/useRolesTable.tsx | 0 .../Administration/Roles/useRoleFormState.ts | 0 .../AuthenticationProviders.tsx | 0 .../ServerConfigurationAdminForm.tsx | 0 ...verConfigurationAuthenticationBootstrap.ts | 0 .../MetaParameters/CreateMetaParameter.tsx | 0 .../CreateMetaParameterService.ts | 0 .../Form/IUserProfileFormState.ts | 0 .../MetaParameters/Form/MetaParameterForm.tsx | 0 .../Form/UserInfo/MetaParameterInfoPanel.tsx | 0 .../Form/UserInfo/MetaParameterInfoTab.tsx | 0 .../Form/UserProfileFormState.ts | 0 .../Users/MetaParameters/MetaParameters.tsx | 0 .../MetaParametersController.ts | 0 .../Users/MetaParameters/MetadataParam.tsx | 0 .../MetaParameters/UserDetailsInfo/Origin.tsx | 0 .../Users/MetaParameters/UserEdit.tsx | 0 .../MetaParameters/UserEditController.ts | 0 .../Users/UserForm/ConnectionAccess.tsx | 0 .../Users/UserForm/OriginInfo.tsx | 0 .../Users/UserForm/OriginInfoTab.tsx | 0 .../Users/UserForm/UserForm.tsx | 0 .../Users/UserForm/UserFormBaseBootstrap.ts | 0 .../Users/UserForm/UserFormController.ts | 0 .../Users/UserForm/UserFormService.ts | 0 .../Users/UserForm/UserInfo.tsx | 0 .../Users/UsersAdministration.tsx | 0 .../UsersAdministrationNavigationService.ts | 0 .../Users/UsersAdministrationService.ts | 0 .../Administration/Users/UsersDrawerItem.tsx | 0 .../Users/UsersTable/CreateUser.tsx | 0 .../Users/UsersTable/CreateUserService.ts | 0 .../Administration/Users/UsersTable/User.tsx | 0 .../UsersTable/UserDetailsInfo/Origin.tsx | 0 .../Users/UsersTable/UserEdit.tsx | 0 .../Users/UsersTable/UserEditController.ts | 0 .../Users/UsersTable/UsersTable.tsx | 0 .../Users/UsersTable/UsersTableController.ts | 0 .../src/AuthenticationLocaleService.ts | 34 +++++ .../src/PluginBootstrap.ts | 31 +++++ .../src/index.ts | 3 + .../src/locales/en.ts | 116 ++++++++++++++++++ .../src/locales/it.ts | 58 +++++++++ .../src/locales/ru.ts | 114 +++++++++++++++++ .../src/manifest.ts | 61 +++++++++ .../tsconfig.json | 8 ++ .../plugin-authentication/package.json | 1 - .../src/PluginBootstrap.ts | 9 +- .../plugin-authentication/src/index.ts | 1 + .../plugin-authentication/src/manifest.ts | 38 ------ webapp/packages/product-default/package.json | 1 + 114 files changed, 488 insertions(+), 47 deletions(-) create mode 100644 webapp/packages/plugin-authentication-administration/.gitignore create mode 100644 webapp/packages/plugin-authentication-administration/package.json rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/AuthConfigurationForm.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/AuthConfigurationFormBaseActions.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/AuthConfigurationFormService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/AuthConfigurationFormState.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/AuthConfigurationsAdministration.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/AuthConfigurationsAdministrationNavService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/AuthConfigurationsAdministrationService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/AuthConfigurationsDrawerItem.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfiguration.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfigurationEdit.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfigurationsTable.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/AuthConfigurationsTable/useConfigurationsTable.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/Contexts/authConfigurationContext.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/Contexts/authConfigurationFormConfigureContext.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/Contexts/authConfigurationFormStateContext.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/CreateAuthConfiguration.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/CreateAuthConfigurationService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/IAuthConfigurationFormProps.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/IdentityProvidersServiceLink.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/Options/AuthConfigurationOptions.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/Options/AuthConfigurationOptionsTabService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/IdentityProviders/useAuthConfigurationFormState.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/Contexts/roleContext.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/Contexts/roleFormConfigureContext.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/Contexts/roleFormStateContext.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/CreateRole.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/CreateRoleService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedConnections/ConnectionList.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedConnections/GrantedConnections.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedConnections/GrantedConnectionsList.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedConnections/GrantedConnectionsTabService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableHeader/GrantedConnectionsTableHeader.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableHeader/GrantedConnectionsTableInnerHeader.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableItem.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedConnections/IGrantedConnectionsTabState.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedConnections/getFilteredConnections.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedConnections/useGrantedConnections.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedUsers/GrantedUserList.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedUsers/GrantedUsers.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedUsers/GrantedUsersTabService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedUsers/GrantedUsersTableHeader/GrantedUsersTableHeader.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedUsers/GrantedUsersTableHeader/GrantedUsersTableInnerHeader.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedUsers/GrantedUsersTableItem.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedUsers/IGrantedUsersTabState.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedUsers/UserList.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedUsers/getFilteredUsers.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/GrantedUsers/useGrantedUsers.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/IRoleFormProps.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/Options/RoleOptions.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/Options/RoleOptionsTabService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/RoleForm.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/RoleFormBaseActions.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/RoleFormService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/RoleFormState.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/RolesAdministration.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/RolesAdministrationNavService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/RolesAdministrationService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/RolesDrawerItem.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/RolesTable/Role.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/RolesTable/RoleEdit.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/RolesTable/RolesTable.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/RolesTable/useRolesTable.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Roles/useRoleFormState.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/ServerConfiguration/AuthenticationProviders.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/ServerConfiguration/ServerConfigurationAdminForm.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/ServerConfiguration/ServerConfigurationAuthenticationBootstrap.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/MetaParameters/CreateMetaParameter.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/MetaParameters/CreateMetaParameterService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/MetaParameters/Form/IUserProfileFormState.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/MetaParameters/Form/MetaParameterForm.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/MetaParameters/Form/UserInfo/MetaParameterInfoPanel.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/MetaParameters/Form/UserInfo/MetaParameterInfoTab.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/MetaParameters/Form/UserProfileFormState.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/MetaParameters/MetaParameters.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/MetaParameters/MetaParametersController.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/MetaParameters/MetadataParam.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/MetaParameters/UserDetailsInfo/Origin.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/MetaParameters/UserEdit.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/MetaParameters/UserEditController.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UserForm/ConnectionAccess.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UserForm/OriginInfo.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UserForm/OriginInfoTab.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UserForm/UserForm.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UserForm/UserFormBaseBootstrap.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UserForm/UserFormController.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UserForm/UserFormService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UserForm/UserInfo.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UsersAdministration.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UsersAdministrationNavigationService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UsersAdministrationService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UsersDrawerItem.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UsersTable/CreateUser.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UsersTable/CreateUserService.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UsersTable/User.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UsersTable/UserDetailsInfo/Origin.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UsersTable/UserEdit.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UsersTable/UserEditController.ts (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UsersTable/UsersTable.tsx (100%) rename webapp/packages/{plugin-authentication => plugin-authentication-administration}/src/Administration/Users/UsersTable/UsersTableController.ts (100%) create mode 100644 webapp/packages/plugin-authentication-administration/src/AuthenticationLocaleService.ts create mode 100644 webapp/packages/plugin-authentication-administration/src/PluginBootstrap.ts create mode 100644 webapp/packages/plugin-authentication-administration/src/index.ts create mode 100644 webapp/packages/plugin-authentication-administration/src/locales/en.ts create mode 100644 webapp/packages/plugin-authentication-administration/src/locales/it.ts create mode 100644 webapp/packages/plugin-authentication-administration/src/locales/ru.ts create mode 100644 webapp/packages/plugin-authentication-administration/src/manifest.ts create mode 100644 webapp/packages/plugin-authentication-administration/tsconfig.json diff --git a/webapp/packages/plugin-authentication-administration/.gitignore b/webapp/packages/plugin-authentication-administration/.gitignore new file mode 100644 index 0000000000..15bc16c7c3 --- /dev/null +++ b/webapp/packages/plugin-authentication-administration/.gitignore @@ -0,0 +1,17 @@ +# dependencies +/node_modules + +# testing +/coverage + +# production +/lib + +# misc +.DS_Store +.env* + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/webapp/packages/plugin-authentication-administration/package.json b/webapp/packages/plugin-authentication-administration/package.json new file mode 100644 index 0000000000..4eabcaece1 --- /dev/null +++ b/webapp/packages/plugin-authentication-administration/package.json @@ -0,0 +1,43 @@ +{ + "name": "@cloudbeaver/plugin-authentication-administration", + "sideEffects": false, + "version": "0.1.0", + "description": "", + "license": "Apache-2.0", + "main": "lib/index.js", + "module": "lib/index.js", + "types": "src/index.ts", + "scripts": { + "prebuild": "rimraf lib/*", + "build": "webpack --config ../../configs/webpack.plugin.config.js", + "postbuild": "tsc", + "lint": "eslint ./src/ --ext .ts,.tsx", + "lint-fix": "eslint ./src/ --ext .ts,.tsx --fix" + }, + "peerDependencies": { + "@cloudbeaver/core-administration": "^0.1.0", + "@cloudbeaver/core-authentication": "^0.1.0", + "@cloudbeaver/core-app": "^0.1.0", + "@cloudbeaver/core-blocks": "^0.1.0", + "@cloudbeaver/core-di": "^0.1.0", + "@cloudbeaver/core-dialogs": "^0.1.0", + "@cloudbeaver/core-events": "^0.1.0", + "@cloudbeaver/core-extensions": "^0.1.0", + "@cloudbeaver/core-localization": "^0.1.0", + "@cloudbeaver/core-notifications": "^0.1.0", + "@cloudbeaver/core-plugin": "^0.1.0", + "@cloudbeaver/core-product": "^0.1.0", + "@cloudbeaver/core-root": "^0.1.0", + "@cloudbeaver/core-sdk": "^0.1.0", + "@cloudbeaver/core-settings": "^0.1.0", + "@cloudbeaver/core-theming": "^0.1.0", + "@cloudbeaver/core-utils": "^0.1.0", + "@cloudbeaver/plugin-administration": "^0.1.0", + "@cloudbeaver/plugin-authentication-administration": "^0.1.0", + "react": "^16.x.x", + "rxjs": "^6.x.x", + "mobx": "^5.x.x", + "mobx-react-lite": "^3.x.x", + "reshadow": "^0.x.x" + } +} diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationForm.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationForm.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationForm.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationForm.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationFormBaseActions.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationFormBaseActions.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationFormBaseActions.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationFormBaseActions.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationFormService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationFormService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationFormService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationFormService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationFormState.ts b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationFormState.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationFormState.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationFormState.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsAdministration.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsAdministration.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsAdministration.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsAdministration.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsAdministrationNavService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsAdministrationNavService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsAdministrationNavService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsAdministrationNavService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsAdministrationService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsAdministrationService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsAdministrationService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsAdministrationService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsDrawerItem.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsDrawerItem.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsDrawerItem.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsDrawerItem.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfiguration.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfiguration.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfiguration.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfiguration.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfigurationEdit.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfigurationEdit.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfigurationEdit.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfigurationEdit.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfigurationsTable.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfigurationsTable.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfigurationsTable.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsTable/AuthConfigurationsTable.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsTable/useConfigurationsTable.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsTable/useConfigurationsTable.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/AuthConfigurationsTable/useConfigurationsTable.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/AuthConfigurationsTable/useConfigurationsTable.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/Contexts/authConfigurationContext.ts b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Contexts/authConfigurationContext.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/Contexts/authConfigurationContext.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Contexts/authConfigurationContext.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/Contexts/authConfigurationFormConfigureContext.ts b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Contexts/authConfigurationFormConfigureContext.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/Contexts/authConfigurationFormConfigureContext.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Contexts/authConfigurationFormConfigureContext.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/Contexts/authConfigurationFormStateContext.ts b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Contexts/authConfigurationFormStateContext.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/Contexts/authConfigurationFormStateContext.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Contexts/authConfigurationFormStateContext.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/CreateAuthConfiguration.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/CreateAuthConfiguration.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/CreateAuthConfiguration.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/CreateAuthConfiguration.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/CreateAuthConfigurationService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/CreateAuthConfigurationService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/CreateAuthConfigurationService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/CreateAuthConfigurationService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/IAuthConfigurationFormProps.ts b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/IAuthConfigurationFormProps.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/IAuthConfigurationFormProps.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/IAuthConfigurationFormProps.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/IdentityProvidersServiceLink.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/IdentityProvidersServiceLink.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/IdentityProvidersServiceLink.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/IdentityProvidersServiceLink.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/Options/AuthConfigurationOptions.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Options/AuthConfigurationOptions.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/Options/AuthConfigurationOptions.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Options/AuthConfigurationOptions.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/Options/AuthConfigurationOptionsTabService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Options/AuthConfigurationOptionsTabService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/Options/AuthConfigurationOptionsTabService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Options/AuthConfigurationOptionsTabService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/IdentityProviders/useAuthConfigurationFormState.ts b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/useAuthConfigurationFormState.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/IdentityProviders/useAuthConfigurationFormState.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/useAuthConfigurationFormState.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/Contexts/roleContext.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/Contexts/roleContext.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/Contexts/roleContext.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/Contexts/roleContext.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/Contexts/roleFormConfigureContext.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/Contexts/roleFormConfigureContext.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/Contexts/roleFormConfigureContext.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/Contexts/roleFormConfigureContext.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/Contexts/roleFormStateContext.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/Contexts/roleFormStateContext.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/Contexts/roleFormStateContext.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/Contexts/roleFormStateContext.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/CreateRole.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/CreateRole.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/CreateRole.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/CreateRole.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/CreateRoleService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/CreateRoleService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/CreateRoleService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/CreateRoleService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/ConnectionList.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/ConnectionList.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/ConnectionList.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/ConnectionList.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/GrantedConnections.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnections.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/GrantedConnections.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnections.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/GrantedConnectionsList.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnectionsList.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/GrantedConnectionsList.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnectionsList.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/GrantedConnectionsTabService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnectionsTabService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/GrantedConnectionsTabService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnectionsTabService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableHeader/GrantedConnectionsTableHeader.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableHeader/GrantedConnectionsTableHeader.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableHeader/GrantedConnectionsTableHeader.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableHeader/GrantedConnectionsTableHeader.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableHeader/GrantedConnectionsTableInnerHeader.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableHeader/GrantedConnectionsTableInnerHeader.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableHeader/GrantedConnectionsTableInnerHeader.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableHeader/GrantedConnectionsTableInnerHeader.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableItem.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableItem.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableItem.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnectionsTableItem.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/IGrantedConnectionsTabState.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/IGrantedConnectionsTabState.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/IGrantedConnectionsTabState.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/IGrantedConnectionsTabState.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/getFilteredConnections.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/getFilteredConnections.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/getFilteredConnections.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/getFilteredConnections.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/useGrantedConnections.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/useGrantedConnections.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedConnections/useGrantedConnections.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/useGrantedConnections.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/GrantedUserList.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/GrantedUserList.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/GrantedUserList.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/GrantedUserList.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/GrantedUsers.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/GrantedUsers.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/GrantedUsers.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/GrantedUsers.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/GrantedUsersTabService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/GrantedUsersTabService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/GrantedUsersTabService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/GrantedUsersTabService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/GrantedUsersTableHeader/GrantedUsersTableHeader.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/GrantedUsersTableHeader/GrantedUsersTableHeader.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/GrantedUsersTableHeader/GrantedUsersTableHeader.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/GrantedUsersTableHeader/GrantedUsersTableHeader.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/GrantedUsersTableHeader/GrantedUsersTableInnerHeader.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/GrantedUsersTableHeader/GrantedUsersTableInnerHeader.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/GrantedUsersTableHeader/GrantedUsersTableInnerHeader.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/GrantedUsersTableHeader/GrantedUsersTableInnerHeader.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/GrantedUsersTableItem.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/GrantedUsersTableItem.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/GrantedUsersTableItem.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/GrantedUsersTableItem.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/IGrantedUsersTabState.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/IGrantedUsersTabState.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/IGrantedUsersTabState.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/IGrantedUsersTabState.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/UserList.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/UserList.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/UserList.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/UserList.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/getFilteredUsers.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/getFilteredUsers.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/getFilteredUsers.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/getFilteredUsers.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/useGrantedUsers.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/useGrantedUsers.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/GrantedUsers/useGrantedUsers.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedUsers/useGrantedUsers.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/IRoleFormProps.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/IRoleFormProps.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/IRoleFormProps.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/IRoleFormProps.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/Options/RoleOptions.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/Options/RoleOptions.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/Options/RoleOptions.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/Options/RoleOptions.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/Options/RoleOptionsTabService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/Options/RoleOptionsTabService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/Options/RoleOptionsTabService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/Options/RoleOptionsTabService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/RoleForm.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/RoleForm.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/RoleForm.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/RoleForm.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/RoleFormBaseActions.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/RoleFormBaseActions.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/RoleFormBaseActions.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/RoleFormBaseActions.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/RoleFormService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/RoleFormService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/RoleFormService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/RoleFormService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/RoleFormState.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/RoleFormState.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/RoleFormState.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/RoleFormState.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/RolesAdministration.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesAdministration.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/RolesAdministration.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesAdministration.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/RolesAdministrationNavService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesAdministrationNavService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/RolesAdministrationNavService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesAdministrationNavService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/RolesAdministrationService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesAdministrationService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/RolesAdministrationService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesAdministrationService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/RolesDrawerItem.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesDrawerItem.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/RolesDrawerItem.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesDrawerItem.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/RolesTable/Role.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesTable/Role.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/RolesTable/Role.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesTable/Role.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/RolesTable/RoleEdit.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesTable/RoleEdit.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/RolesTable/RoleEdit.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesTable/RoleEdit.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/RolesTable/RolesTable.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesTable/RolesTable.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/RolesTable/RolesTable.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesTable/RolesTable.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/RolesTable/useRolesTable.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesTable/useRolesTable.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/RolesTable/useRolesTable.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/RolesTable/useRolesTable.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Roles/useRoleFormState.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/useRoleFormState.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Roles/useRoleFormState.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Roles/useRoleFormState.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/ServerConfiguration/AuthenticationProviders.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/ServerConfiguration/AuthenticationProviders.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/ServerConfiguration/AuthenticationProviders.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/ServerConfiguration/AuthenticationProviders.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/ServerConfiguration/ServerConfigurationAdminForm.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/ServerConfiguration/ServerConfigurationAdminForm.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/ServerConfiguration/ServerConfigurationAdminForm.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/ServerConfiguration/ServerConfigurationAdminForm.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/ServerConfiguration/ServerConfigurationAuthenticationBootstrap.ts b/webapp/packages/plugin-authentication-administration/src/Administration/ServerConfiguration/ServerConfigurationAuthenticationBootstrap.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/ServerConfiguration/ServerConfigurationAuthenticationBootstrap.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/ServerConfiguration/ServerConfigurationAuthenticationBootstrap.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/CreateMetaParameter.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/CreateMetaParameter.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/CreateMetaParameter.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/CreateMetaParameter.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/CreateMetaParameterService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/CreateMetaParameterService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/CreateMetaParameterService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/CreateMetaParameterService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/Form/IUserProfileFormState.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/Form/IUserProfileFormState.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/Form/IUserProfileFormState.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/Form/IUserProfileFormState.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/Form/MetaParameterForm.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/Form/MetaParameterForm.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/Form/MetaParameterForm.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/Form/MetaParameterForm.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/Form/UserInfo/MetaParameterInfoPanel.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/Form/UserInfo/MetaParameterInfoPanel.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/Form/UserInfo/MetaParameterInfoPanel.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/Form/UserInfo/MetaParameterInfoPanel.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/Form/UserInfo/MetaParameterInfoTab.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/Form/UserInfo/MetaParameterInfoTab.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/Form/UserInfo/MetaParameterInfoTab.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/Form/UserInfo/MetaParameterInfoTab.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/Form/UserProfileFormState.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/Form/UserProfileFormState.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/Form/UserProfileFormState.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/Form/UserProfileFormState.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/MetaParameters.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/MetaParameters.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/MetaParameters.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/MetaParameters.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/MetaParametersController.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/MetaParametersController.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/MetaParametersController.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/MetaParametersController.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/MetadataParam.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/MetadataParam.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/MetadataParam.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/MetadataParam.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/UserDetailsInfo/Origin.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/UserDetailsInfo/Origin.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/UserDetailsInfo/Origin.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/UserDetailsInfo/Origin.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/UserEdit.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/UserEdit.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/UserEdit.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/UserEdit.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/UserEditController.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/UserEditController.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/MetaParameters/UserEditController.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/MetaParameters/UserEditController.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UserForm/ConnectionAccess.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/ConnectionAccess.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UserForm/ConnectionAccess.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/ConnectionAccess.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UserForm/OriginInfo.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/OriginInfo.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UserForm/OriginInfo.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/OriginInfo.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UserForm/OriginInfoTab.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/OriginInfoTab.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UserForm/OriginInfoTab.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/OriginInfoTab.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UserForm/UserForm.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/UserForm.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UserForm/UserForm.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/UserForm.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UserForm/UserFormBaseBootstrap.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/UserFormBaseBootstrap.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UserForm/UserFormBaseBootstrap.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/UserFormBaseBootstrap.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UserForm/UserFormController.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/UserFormController.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UserForm/UserFormController.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/UserFormController.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UserForm/UserFormService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/UserFormService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UserForm/UserFormService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/UserFormService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UserForm/UserInfo.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/UserInfo.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UserForm/UserInfo.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/UserInfo.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UsersAdministration.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersAdministration.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UsersAdministration.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersAdministration.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UsersAdministrationNavigationService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersAdministrationNavigationService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UsersAdministrationNavigationService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersAdministrationNavigationService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UsersAdministrationService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersAdministrationService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UsersAdministrationService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersAdministrationService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UsersDrawerItem.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersDrawerItem.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UsersDrawerItem.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersDrawerItem.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/CreateUser.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/CreateUser.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/CreateUser.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/CreateUser.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/CreateUserService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/CreateUserService.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/CreateUserService.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/CreateUserService.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/User.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/User.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/User.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/User.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/UserDetailsInfo/Origin.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/UserDetailsInfo/Origin.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/UserDetailsInfo/Origin.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/UserDetailsInfo/Origin.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/UserEdit.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/UserEdit.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/UserEdit.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/UserEdit.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/UserEditController.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/UserEditController.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/UserEditController.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/UserEditController.ts diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/UsersTable.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/UsersTable.tsx similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/UsersTable.tsx rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/UsersTable.tsx diff --git a/webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/UsersTableController.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/UsersTableController.ts similarity index 100% rename from webapp/packages/plugin-authentication/src/Administration/Users/UsersTable/UsersTableController.ts rename to webapp/packages/plugin-authentication-administration/src/Administration/Users/UsersTable/UsersTableController.ts diff --git a/webapp/packages/plugin-authentication-administration/src/AuthenticationLocaleService.ts b/webapp/packages/plugin-authentication-administration/src/AuthenticationLocaleService.ts new file mode 100644 index 0000000000..4be7ecc936 --- /dev/null +++ b/webapp/packages/plugin-authentication-administration/src/AuthenticationLocaleService.ts @@ -0,0 +1,34 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2021 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ + +import { Bootstrap, injectable } from '@cloudbeaver/core-di'; +import { LocalizationService } from '@cloudbeaver/core-localization'; + +@injectable() +export class AuthenticationLocaleService extends Bootstrap { + constructor(private localizationService: LocalizationService) { + super(); + } + + register(): void | Promise { + this.localizationService.addProvider(this.provider.bind(this)); + } + + load(): void | Promise { } + + private async provider(locale: string) { + switch (locale) { + case 'ru': + return (await import('./locales/ru')).default; + case 'it': + return (await import('./locales/it')).default; + default: + return (await import('./locales/en')).default; + } + } +} diff --git a/webapp/packages/plugin-authentication-administration/src/PluginBootstrap.ts b/webapp/packages/plugin-authentication-administration/src/PluginBootstrap.ts new file mode 100644 index 0000000000..8b15e21dcf --- /dev/null +++ b/webapp/packages/plugin-authentication-administration/src/PluginBootstrap.ts @@ -0,0 +1,31 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2021 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ + +import { AdministrationTopAppBarService } from '@cloudbeaver/core-administration'; +import { injectable, Bootstrap } from '@cloudbeaver/core-di'; +import { ServerConfigurationService } from '@cloudbeaver/plugin-administration'; +import { UserInfo } from '@cloudbeaver/plugin-authentication'; + +import { AuthenticationProviders } from './Administration/ServerConfiguration/AuthenticationProviders'; + +@injectable() +export class PluginBootstrap extends Bootstrap { + constructor( + private administrationTopAppBarService: AdministrationTopAppBarService, + private readonly serverConfigurationService: ServerConfigurationService, + ) { + super(); + } + + register(): void { + this.administrationTopAppBarService.placeholder.add(UserInfo, 4); + this.serverConfigurationService.configurationContainer.add(AuthenticationProviders, 0); + } + + load(): void | Promise { } +} diff --git a/webapp/packages/plugin-authentication-administration/src/index.ts b/webapp/packages/plugin-authentication-administration/src/index.ts new file mode 100644 index 0000000000..e2e38fb300 --- /dev/null +++ b/webapp/packages/plugin-authentication-administration/src/index.ts @@ -0,0 +1,3 @@ +import { manifest } from './manifest'; + +export default manifest; diff --git a/webapp/packages/plugin-authentication-administration/src/locales/en.ts b/webapp/packages/plugin-authentication-administration/src/locales/en.ts new file mode 100644 index 0000000000..6f3a9b1d4f --- /dev/null +++ b/webapp/packages/plugin-authentication-administration/src/locales/en.ts @@ -0,0 +1,116 @@ +export default [ + ['authentication_login_dialog_title', 'Authentication'], + ['authentication_login', 'Login'], + ['authentication_logout', 'Logout'], + ['authentication_authenticate', 'Authenticate'], + ['authentication_select_provider', 'Select available provider'], + ['authentication_configure', 'Please configure authentication methods'], + ['authentication_provider_disabled', 'Authentication method is disabled'], + ['authentication_request_token', 'Additional authentication is required'], + ['authentication_identity_provider_search_placeholder', 'Search for configuration name or description...'], + ['authentication_identity_provider_dialog_subtitle', 'Choose configuration you want to sign in with'], + ['authentication_administration_user_connections_user_add', 'User Creation'], + ['authentication_administration_user_connections_user_new', 'New user'], + ['authentication_administration_user_connections_access_load_fail', 'User\'s granted connections loading failed'], + ['authentication_administration_user_connections_access_connections_load_fail', 'Connections loading failed'], + ['authentication_administration_user_connections_access', 'Connections Access'], + ['authentication_administration_user_connections_access_granted_by', 'Granted by'], + ['authentication_administration_user_connections_access_granted_role', 'Role:'], + ['authentication_administration_user_connections_access_granted_directly', 'Directly'], + ['authentication_administration_user_connections_access_granted_unmanaged', 'Unmanaged'], + ['authentication_administration_user_connections_empty', 'No available connections'], + ['authentication_administration_user_origin_empty', 'No available details'], + ['authentication_administration_user_info', 'Info'], + ['authentication_administration_item', 'Users'], + ['authentication_administration_item_metaParameters', 'Meta Parameters'], + ['authentication_administration_tools_add_tooltip', 'Add new user'], + ['authentication_administration_tools_refresh_tooltip', 'Refresh user list'], + ['authentication_administration_tools_delete_tooltip', 'Delete selected users'], + ['authentication_administration_tools_refresh_success', 'User list was refreshed'], + ['authentication_administration_user_update_failed', 'Error saving user'], + ['authentication_administration_user_updated', 'User updated'], + ['authentication_administration_user_created', 'User was created successfully'], + ['authentication_administration_user_create_failed', 'Error creating new user'], + ['authentication_administration_users_delete_confirmation', "You're going to delete these users: "], + + ['authentication_user_name', 'User name'], + ['authentication_user_credentials', 'Credentials'], + ['authentication_user_meta_parameters', 'Parameters'], + ['authentication_user_current_password', 'Current password'], + ['authentication_user_new_password', 'New password'], + ['authentication_user_password', 'User password'], + ['authentication_user_password_repeat', 'Repeat password'], + ['authentication_user_role', 'User role'], + ['authentication_user_login_not_set', 'Login can\'t be empty'], + ['authentication_user_role_not_set', 'At least one role must be selected'], + ['authentication_user_password_not_set', 'Password is required'], + ['authentication_user_passwords_not_match', "Passwords don't match"], + ['authentication_user_login_already_exists', 'The user with this name already exists'], + ['authentication_user_login_cant_be_used', 'Sorry, that name cannot be used'], + ['authentication_user_password_change_dialog_title', 'Change password (local)'], + ['authentication_user_password_change_menu_title', 'Change local password'], + ['authentication_user_password_change_success', 'Password was changed successfully'], + ['authentication_user_password_change_dialog_submit', 'Change'], + ['authentication_user_icon_tooltip', 'User'], + ['authentication_role_icon_tooltip', 'Role'], + + ['administration_configuration_wizard_configuration_admin', 'Administrator Credentials'], + ['administration_configuration_wizard_configuration_admin_name', 'Login'], + ['administration_configuration_wizard_configuration_admin_password', 'Password'], + ['administration_configuration_wizard_configuration_anonymous_access', 'Allow anonymous access'], + ['administration_configuration_wizard_configuration_anonymous_access_description', 'Allows to work with CloudBeaver without user authentication'], + ['administration_configuration_wizard_configuration_authentication_group', 'Authentication settings'], + ['administration_configuration_wizard_configuration_services_group', 'Services'], + ['administration_configuration_wizard_configuration_services', 'Services'], + ['administration_configuration_wizard_configuration_authentication', 'Enable users authentication'], + ['administration_configuration_wizard_configuration_authentication_description', 'Allows users to authenticate. Otherwise only anonymous access is enabled'], + + ['administration_identity_providers_tab_title', 'Identity Providers'], + ['administration_identity_providers_provider', 'Provider'], + ['administration_identity_providers_provider_id', 'ID'], + ['administration_identity_providers_provider_configuration_name', 'Configuration name'], + ['administration_identity_providers_provider_configuration_disabled', 'Disabled'], + ['administration_identity_providers_provider_configuration_description', 'Description'], + ['administration_identity_providers_provider_configuration_icon_url', 'Icon URL'], + ['administration_identity_providers_provider_configuration_parameters', 'Parameters'], + ['administration_identity_providers_provider_configuration_links', 'Links'], + ['administration_identity_providers_provider_configuration_links_metadata', 'Download metadata file'], + ['administration_identity_providers_wizard_description', 'Add identity providers'], + ['administration_identity_providers_configuration_add', 'Configuration creation'], + ['administration_identity_providers_choose_provider_placeholder', 'Select provider...'], + ['administration_identity_providers_add_tooltip', 'Add new configuration'], + ['administration_identity_providers_refresh_tooltip', 'Refresh configuration list'], + ['administration_identity_providers_delete_tooltip', 'Delete selected configurations'], + ['administration_identity_providers_delete_confirmation', "You're going to delete these configurations: "], + ['administration_identity_providers_provider_save_error', 'Save configuration error'], + ['administration_identity_providers_provider_create_error', 'Create configuration error'], + ['administration_identity_providers_configuration_list_update_success', 'Configuration list was refreshed'], + ['administration_identity_providers_configuration_list_update_fail', 'Configuration list refresh failed'], + ['administration_identity_providers_service_link', 'Edit configurations'], + + ['administration_roles_tab_title', 'Roles'], + ['administration_roles_tab_description', 'Role management'], + ['administration_roles_role_creation', 'Role creation'], + ['administration_roles_role_id', 'Role ID'], + ['administration_roles_role_name', 'Role name'], + ['administration_roles_role_description', 'Description'], + ['administration_roles_role_create_error', 'Create role error'], + ['administration_roles_role_save_error', 'Save role error'], + ['administration_roles_role_list_update_success', 'Role list was refreshed'], + ['administration_roles_role_list_update_fail', 'Role list refresh failed'], + ['administration_roles_add_tooltip', 'Add new role'], + ['administration_roles_refresh_tooltip', 'Refresh role list'], + ['administration_roles_delete_tooltip', 'Delete selected roles'], + ['administration_roles_delete_confirmation', "You're going to delete these roles: "], + + ['administration_roles_role_granted_users_tab_title', 'Users'], + ['administration_roles_role_granted_users_search_placeholder', 'Search for user ID...'], + ['administration_roles_role_granted_users_user_id', 'User ID'], + ['administration_roles_role_granted_users_user_name', 'User name'], + ['administration_roles_role_granted_users_empty', 'No available users'], + ['administration_roles_role_granted_users_permission_denied', "You can't edit your own permissions"], + + ['administration_roles_role_granted_connections_tab_title', 'Connections'], + ['administration_roles_role_granted_connections_search_placeholder', 'Search for connection name...'], + ['administration_roles_role_granted_connections_empty', 'No available connections'], +]; diff --git a/webapp/packages/plugin-authentication-administration/src/locales/it.ts b/webapp/packages/plugin-authentication-administration/src/locales/it.ts new file mode 100644 index 0000000000..a4de4b8893 --- /dev/null +++ b/webapp/packages/plugin-authentication-administration/src/locales/it.ts @@ -0,0 +1,58 @@ +export default [ + ['authentication_login_dialog_title', 'Autenticazione'], + ['authentication_login', 'Login'], + ['authentication_logout', 'Logout'], + ['authentication_authenticate', 'Autentica'], + ['authentication_request_token', 'Autenticazione addizionale richiesta'], + ['authentication_administration_user_connections_user_add', 'Creazione di Utente'], + ['authentication_administration_user_connections_user_new', 'Nuovo utente'], + ['authentication_administration_user_connections_access_load_fail', 'Errore in fase di caricamento delle connessioni autorizzate all\'utente'], + ['authentication_administration_user_connections_access_connections_load_fail', 'Errore in fase di caricamento delle connessioni'], + ['authentication_administration_user_connections_access', 'Accesso alle connessioni'], + ['authentication_administration_user_connections_access_granted_by', 'Permesso da'], + ['authentication_administration_user_connections_access_granted_role', 'Ruolo:'], + ['authentication_administration_user_connections_access_granted_directly', 'Direttamente'], + ['authentication_administration_user_connections_access_granted_unmanaged', 'Non gestito'], + ['authentication_administration_user_connections_empty', 'Nessuna connessione disponibile'], + ['authentication_administration_user_origin_empty', 'Nessun dettaglio disponibile'], + ['authentication_administration_user_info', 'Info'], + ['authentication_administration_item', 'Utenti'], + ['authentication_administration_tools_add_tooltip', 'Aggiungi nuovo utente'], + ['authentication_administration_tools_refresh_tooltip', 'Aggiorna la lista utenti'], + ['authentication_administration_tools_delete_tooltip', 'Elimina gli utenti selezionati'], + ['authentication_administration_tools_refresh_success', 'Lista degli utenti ricaricata'], + ['authentication_administration_user_update_failed', 'Errore al salvataggio utente'], + ['authentication_administration_user_updated', 'Utente aggiornato'], + ['authentication_administration_user_created', 'Utente creato con successo'], + ['authentication_administration_user_create_failed', 'Errore di creazione nuovo utente'], + ['authentication_user_name', 'Nome utente'], + ['authentication_user_credentials', 'Credenziali'], + ['authentication_user_meta_parameters', 'Parameters'], + ['authentication_user_current_password', 'Password corrente'], + ['authentication_user_new_password', 'Nuova password'], + ['authentication_user_password', 'Password utente'], + ['authentication_user_password_repeat', 'Ripeti password'], + ['authentication_user_role', 'Ruolo utente'], + ['authentication_user_login_not_set', 'Login non può esser vuoto'], + ['authentication_user_role_not_set', 'Selezionare almeno un ruolo'], + ['authentication_user_password_not_set', 'La Password è obbligatoria'], + ['authentication_user_passwords_not_match', 'Le Passwords non coincidono'], + ['authentication_user_login_already_exists', 'Esiste già un utente con quel nome'], + ['authentication_user_login_cant_be_used', 'Quel nome non può essere usato'], + ['authentication_user_password_change_dialog_title', 'Modifica la password (locale)'], + ['authentication_user_password_change_menu_title', 'Modifica la password locale'], + ['authentication_user_password_change_success', 'Password modificata con successo'], + ['authentication_user_password_change_dialog_submit', 'Modifica'], + ['authentication_user_icon_tooltip', 'Utente'], + ['authentication_role_icon_tooltip', 'Ruolo'], + + ['administration_configuration_wizard_configuration_admin', 'Credenziali amministrative'], + ['administration_configuration_wizard_configuration_admin_name', 'Login'], + ['administration_configuration_wizard_configuration_admin_password', 'Password'], + ['administration_configuration_wizard_configuration_anonymous_access', 'Permetti l\'accesso anonimo'], + ['administration_configuration_wizard_configuration_anonymous_access_description', 'Permetti di lavorare con CloudBeaver senza autenticazione'], + ['administration_configuration_wizard_configuration_authentication_group', 'Impostazioni di autenticazione'], + ['administration_configuration_wizard_configuration_services', 'Servizi'], + ['administration_configuration_wizard_configuration_authentication', 'Abilita l\'autenticazione utente'], + ['administration_configuration_wizard_configuration_authentication_description', 'Permetti agli utenti di autenticarsi. In alternativa solo l\'accesso anonimo sarà attivo'], +]; diff --git a/webapp/packages/plugin-authentication-administration/src/locales/ru.ts b/webapp/packages/plugin-authentication-administration/src/locales/ru.ts new file mode 100644 index 0000000000..d880776fd6 --- /dev/null +++ b/webapp/packages/plugin-authentication-administration/src/locales/ru.ts @@ -0,0 +1,114 @@ +export default [ + ['authentication_login_dialog_title', 'Аутентификация'], + ['authentication_login', 'Войти'], + ['authentication_logout', 'Выйти'], + ['authentication_authenticate', 'Аутентифицироваться'], + ['authentication_select_provider', 'Выберите способ аутентификации'], + ['authentication_configure', 'Пожалуйста настройте способы аутентификации'], + ['authentication_provider_disabled', 'Способ аутентификации отключен'], + ['authentication_request_token', 'Необходима дополнительная аутентификация'], + ['authentication_identity_provider_search_placeholder', 'Поиск по имени или описанию конфигурации...'], + ['authentication_identity_provider_dialog_subtitle', 'Выберите конфигурацию с помощью которой вы хотите войти'], + ['authentication_administration_user_connections_user_add', 'Создание пользователя'], + ['authentication_administration_user_connections_user_new', 'Новый пользователь'], + ['authentication_administration_user_connections_access_load_fail', 'Не удалось загрузить доступные пользователю коннекшены'], + ['authentication_administration_user_connections_access_connections_load_fail', 'Ошибка при загрузке списка коннекшенов'], + ['authentication_administration_user_connections_access', 'Доступ к базам'], + ['authentication_administration_user_connections_access_granted_by', 'Предоставлено'], + ['authentication_administration_user_connections_access_granted_role', 'Роль:'], + ['authentication_administration_user_connections_access_granted_directly', 'Напрямую'], + ['authentication_administration_user_connections_access_granted_unmanaged', 'Неуправляемый'], + ['authentication_administration_user_connections_empty', 'Нет доступных коннекшенов'], + ['authentication_administration_user_origin_empty', 'Дополнительная информация не доступна'], + ['authentication_administration_user_info', 'Общее'], + ['authentication_administration_item', 'Пользователи'], + ['authentication_administration_tools_add_tooltip', 'Добавить нового пользователя'], + ['authentication_administration_tools_refresh_tooltip', 'Обновить список пользователей'], + ['authentication_administration_tools_delete_tooltip', 'Удалить выбранных пользователей'], + ['authentication_administration_tools_refresh_success', 'Список пользователей обновлен'], + ['authentication_administration_user_update_failed', 'Не удалось обновить пользователя'], + ['authentication_administration_user_updated', 'Пользователь обновлен'], + ['authentication_administration_user_created', 'Пользователь создан успешно'], + ['authentication_administration_user_create_failed', 'Не удалось создать пользователя'], + ['authentication_administration_users_delete_confirmation', 'Вы собираетесь удалить следующих пользователей: '], + + ['authentication_user_name', 'Имя'], + ['authentication_user_credentials', 'Учетные данные'], + ['authentication_user_meta_parameters', 'Параметры'], + ['authentication_user_current_password', 'Текущий пароль'], + ['authentication_user_new_password', 'Новый пароль'], + ['authentication_user_password', 'Пароль'], + ['authentication_user_password_repeat', 'Повторите пароль'], + ['authentication_user_role', 'Роль'], + ['authentication_user_login_not_set', 'Логин не может быть пустым'], + ['authentication_user_role_not_set', 'Должна быть выбрана минимум одна роль'], + ['authentication_user_password_not_set', 'Пароль не задан'], + ['authentication_user_passwords_not_match', 'Пароли не совпадают'], + ['authentication_user_login_already_exists', 'Пользователь с таким именем уже существует'], + ['authentication_user_login_cant_be_used', 'Данное имя нельзя использовать'], + ['authentication_user_password_change_dialog_title', 'Изменение пароля (локального)'], + ['authentication_user_password_change_menu_title', 'Изменить локальный пароль'], + ['authentication_user_password_change_success', 'Пароль успешно изменен'], + ['authentication_user_password_change_dialog_submit', 'Изменить'], + ['authentication_user_icon_tooltip', 'Пользователь'], + ['authentication_role_icon_tooltip', 'Роль'], + + ['administration_configuration_wizard_configuration_admin', 'Учетные данные администратора'], + ['administration_configuration_wizard_configuration_admin_name', 'Логин'], + ['administration_configuration_wizard_configuration_admin_password', 'Пароль'], + ['administration_configuration_wizard_configuration_anonymous_access', 'Разрешить анонимный доступ'], + ['administration_configuration_wizard_configuration_anonymous_access_description', 'Позволяет работать с CloudBeaver без пользовательской аутентификации'], + ['administration_configuration_wizard_configuration_authentication_group', 'Настройки аутентификации'], + ['administration_configuration_wizard_configuration_services_group', 'Сервисы'], + ['administration_configuration_wizard_configuration_authentication', 'Включить пользовательскую аутентификацию'], + ['administration_configuration_wizard_configuration_authentication_description', 'Позволяет пользователям аутентифицироваться. Иначе будет включен анонимный доступ'], + + ['administration_identity_providers_tab_title', 'Провайдеры идентификации'], + ['administration_identity_providers_provider', 'Провайдер'], + ['administration_identity_providers_provider_id', 'Идентификатор'], + ['administration_identity_providers_provider_configuration_name', 'Название конфигурации'], + ['administration_identity_providers_provider_configuration_disabled', 'Отключена'], + ['administration_identity_providers_provider_configuration_description', 'Описание'], + ['administration_identity_providers_provider_configuration_icon_url', 'URL Иконки'], + ['administration_identity_providers_provider_configuration_parameters', 'Параметры'], + ['administration_identity_providers_provider_configuration_links', 'Ссылки'], + ['administration_identity_providers_provider_configuration_links_metadata', 'Скачать файл метаданных'], + ['administration_identity_providers_wizard_description', 'Добавьте провайдеры идентификации'], + ['administration_identity_providers_configuration_add', 'Создание конфигурации'], + ['administration_identity_providers_choose_provider_placeholder', 'Выберите провайдер...'], + ['administration_identity_providers_add_tooltip', 'Добавить новую конфигурацию'], + ['administration_identity_providers_refresh_tooltip', 'Обновить список конфигураций'], + ['administration_identity_providers_delete_tooltip', 'Удалить выбранные конфигурации'], + ['administration_identity_providers_delete_confirmation', 'Вы собираетесь удалить следующие конфигурации: '], + ['administration_identity_providers_provider_save_error', 'Ошибка при сохранении конфигурации'], + ['administration_identity_providers_provider_create_error', 'Ошибка при создании конфигурации'], + ['administration_identity_providers_configuration_list_update_success', 'Список конфигураций успешно обновлен'], + ['administration_identity_providers_configuration_list_update_fail', 'Не удалось обновить список конфигураций'], + ['administration_identity_providers_service_link', 'Настроить'], + + ['administration_roles_tab_title', 'Роли'], + ['administration_roles_tab_description', 'Управление ролями'], + ['administration_roles_role_creation', 'Создание роли'], + ['administration_roles_role_id', 'ID Роли'], + ['administration_roles_role_name', 'Название роли'], + ['administration_roles_role_description', 'Описание'], + ['administration_roles_role_create_error', 'Не удалось создать роль'], + ['administration_roles_role_save_error', 'Не удалось обновить роль'], + ['administration_roles_role_list_update_success', 'Список ролей обновлен'], + ['administration_roles_role_list_update_fail', 'Не удалось обновить список ролей'], + ['administration_roles_add_tooltip', 'Создать новую роль'], + ['administration_roles_refresh_tooltip', 'Обновить список ролей'], + ['administration_roles_delete_tooltip', 'Удалить выбранные роли'], + ['administration_roles_delete_confirmation', 'Вы собираетесь удалить следующие роли: '], + + ['administration_roles_role_granted_users_tab_title', 'Пользователи'], + ['administration_roles_role_granted_users_search_placeholder', 'Поиск по ID пользователя...'], + ['administration_roles_role_granted_users_user_id', 'ID пользователя'], + ['administration_roles_role_granted_users_user_name', 'Имя пользователя'], + ['administration_roles_role_granted_users_empty', 'Нет доступных пользователей'], + ['administration_roles_role_granted_users_permission_denied', 'Вы не можете редактировать свои настройки доступа'], + + ['administration_roles_role_granted_connections_tab_title', 'Подключения'], + ['administration_roles_role_granted_connections_search_placeholder', 'Поиск по названию подключения...'], + ['administration_roles_role_granted_connections_empty', 'Нет доступных подключений'], +]; diff --git a/webapp/packages/plugin-authentication-administration/src/manifest.ts b/webapp/packages/plugin-authentication-administration/src/manifest.ts new file mode 100644 index 0000000000..d404377562 --- /dev/null +++ b/webapp/packages/plugin-authentication-administration/src/manifest.ts @@ -0,0 +1,61 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2021 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ + +import type { PluginManifest } from '@cloudbeaver/core-di'; + +import { AuthConfigurationFormService } from './Administration/IdentityProviders/AuthConfigurationFormService'; +import { AuthConfigurationsAdministrationNavService } from './Administration/IdentityProviders/AuthConfigurationsAdministrationNavService'; +import { AuthConfigurationsAdministrationService } from './Administration/IdentityProviders/AuthConfigurationsAdministrationService'; +import { CreateAuthConfigurationService } from './Administration/IdentityProviders/CreateAuthConfigurationService'; +import { AuthConfigurationOptionsTabService } from './Administration/IdentityProviders/Options/AuthConfigurationOptionsTabService'; +import { CreateRoleService } from './Administration/Roles/CreateRoleService'; +import { GrantedConnectionsTabService } from './Administration/Roles/GrantedConnections/GrantedConnectionsTabService'; +import { GrantedUsersTabService } from './Administration/Roles/GrantedUsers/GrantedUsersTabService'; +import { RoleOptionsTabService } from './Administration/Roles/Options/RoleOptionsTabService'; +import { RoleFormService } from './Administration/Roles/RoleFormService'; +import { RolesAdministrationNavService } from './Administration/Roles/RolesAdministrationNavService'; +import { RolesAdministrationService } from './Administration/Roles/RolesAdministrationService'; +import { ServerConfigurationAuthenticationBootstrap } from './Administration/ServerConfiguration/ServerConfigurationAuthenticationBootstrap'; +import { CreateMetaParameterService } from './Administration/Users/MetaParameters/CreateMetaParameterService'; +import { UserFormBaseBootstrap } from './Administration/Users/UserForm/UserFormBaseBootstrap'; +import { UserFormService } from './Administration/Users/UserForm/UserFormService'; +import { UsersAdministrationNavigationService } from './Administration/Users/UsersAdministrationNavigationService'; +import { UsersAdministrationService } from './Administration/Users/UsersAdministrationService'; +import { CreateUserService } from './Administration/Users/UsersTable/CreateUserService'; +import { AuthenticationLocaleService } from './AuthenticationLocaleService'; +import { PluginBootstrap } from './PluginBootstrap'; + +export const manifest: PluginManifest = { + info: { + name: 'Authentication Administration', + }, + + providers: [ + PluginBootstrap, + UsersAdministrationService, + AuthenticationLocaleService, + CreateUserService, + UsersAdministrationNavigationService, + ServerConfigurationAuthenticationBootstrap, + UserFormService, + CreateMetaParameterService, + UserFormBaseBootstrap, + AuthConfigurationsAdministrationService, + CreateAuthConfigurationService, + AuthConfigurationsAdministrationNavService, + AuthConfigurationFormService, + AuthConfigurationOptionsTabService, + RolesAdministrationService, + CreateRoleService, + RolesAdministrationNavService, + RoleFormService, + RoleOptionsTabService, + GrantedUsersTabService, + GrantedConnectionsTabService, + ], +}; diff --git a/webapp/packages/plugin-authentication-administration/tsconfig.json b/webapp/packages/plugin-authentication-administration/tsconfig.json new file mode 100644 index 0000000000..8cd6b539e3 --- /dev/null +++ b/webapp/packages/plugin-authentication-administration/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "lib" + }, + "include": ["src"], + "exclude": ["**/node_modules", "**/.*/"], +} diff --git a/webapp/packages/plugin-authentication/package.json b/webapp/packages/plugin-authentication/package.json index d13d88460e..848559426b 100644 --- a/webapp/packages/plugin-authentication/package.json +++ b/webapp/packages/plugin-authentication/package.json @@ -32,7 +32,6 @@ "@cloudbeaver/core-settings": "^0.1.0", "@cloudbeaver/core-theming": "^0.1.0", "@cloudbeaver/core-utils": "^0.1.0", - "@cloudbeaver/plugin-administration": "^0.1.0", "react": "^16.x.x", "rxjs": "^6.x.x", "mobx": "^5.x.x", diff --git a/webapp/packages/plugin-authentication/src/PluginBootstrap.ts b/webapp/packages/plugin-authentication/src/PluginBootstrap.ts index f82b8b849e..da05abce04 100644 --- a/webapp/packages/plugin-authentication/src/PluginBootstrap.ts +++ b/webapp/packages/plugin-authentication/src/PluginBootstrap.ts @@ -6,16 +6,13 @@ * you may not use this file except in compliance with the License. */ -import { AdministrationTopAppBarService } from '@cloudbeaver/core-administration'; import { SettingsMenuService, TopNavService } from '@cloudbeaver/core-app'; import { AuthInfoService, AUTH_PROVIDER_LOCAL_ID } from '@cloudbeaver/core-authentication'; import { injectable, Bootstrap } from '@cloudbeaver/core-di'; +import { CommonDialogService } from '@cloudbeaver/core-dialogs'; import { ServerConfigResource } from '@cloudbeaver/core-root'; import { DATA_CONTEXT_MENU, DATA_CONTEXT_MENU_NESTED, MenuBaseItem, MenuService } from '@cloudbeaver/core-view'; -import { ServerConfigurationService } from '@cloudbeaver/plugin-administration'; -import { CommonDialogService } from '../../core-dialogs/src'; -import { AuthenticationProviders } from './Administration/ServerConfiguration/AuthenticationProviders'; import { AuthenticationService } from './AuthenticationService'; import { AuthDialogService } from './Dialog/AuthDialogService'; import { UserInfo } from './UserInfo'; @@ -31,9 +28,7 @@ export class PluginBootstrap extends Bootstrap { private authInfoService: AuthInfoService, private settingsMenuService: SettingsMenuService, private topNavService: TopNavService, - private administrationTopAppBarService: AdministrationTopAppBarService, private menuService: MenuService, - private readonly serverConfigurationService: ServerConfigurationService, private readonly commonDialogService: CommonDialogService, ) { super(); @@ -77,8 +72,6 @@ export class PluginBootstrap extends Bootstrap { } ); this.topNavService.placeholder.add(UserInfo, 4); - this.administrationTopAppBarService.placeholder.add(UserInfo, 4); - this.serverConfigurationService.configurationContainer.add(AuthenticationProviders, 0); } load(): void | Promise { } diff --git a/webapp/packages/plugin-authentication/src/index.ts b/webapp/packages/plugin-authentication/src/index.ts index 90e96c67e3..6021388650 100644 --- a/webapp/packages/plugin-authentication/src/index.ts +++ b/webapp/packages/plugin-authentication/src/index.ts @@ -5,3 +5,4 @@ export default manifest; export * from './AuthenticationService'; export * from './Dialog/AuthDialogService'; export * from './UserMenu/MENU_USER_PROFILE'; +export * from './UserInfo'; diff --git a/webapp/packages/plugin-authentication/src/manifest.ts b/webapp/packages/plugin-authentication/src/manifest.ts index aefcbca6ae..7bb8d141ae 100644 --- a/webapp/packages/plugin-authentication/src/manifest.ts +++ b/webapp/packages/plugin-authentication/src/manifest.ts @@ -8,25 +8,6 @@ import type { PluginManifest } from '@cloudbeaver/core-di'; -import { AuthConfigurationFormService } from './Administration/IdentityProviders/AuthConfigurationFormService'; -import { AuthConfigurationsAdministrationNavService } from './Administration/IdentityProviders/AuthConfigurationsAdministrationNavService'; -import { AuthConfigurationsAdministrationService } from './Administration/IdentityProviders/AuthConfigurationsAdministrationService'; -import { CreateAuthConfigurationService } from './Administration/IdentityProviders/CreateAuthConfigurationService'; -import { AuthConfigurationOptionsTabService } from './Administration/IdentityProviders/Options/AuthConfigurationOptionsTabService'; -import { CreateRoleService } from './Administration/Roles/CreateRoleService'; -import { GrantedConnectionsTabService } from './Administration/Roles/GrantedConnections/GrantedConnectionsTabService'; -import { GrantedUsersTabService } from './Administration/Roles/GrantedUsers/GrantedUsersTabService'; -import { RoleOptionsTabService } from './Administration/Roles/Options/RoleOptionsTabService'; -import { RoleFormService } from './Administration/Roles/RoleFormService'; -import { RolesAdministrationNavService } from './Administration/Roles/RolesAdministrationNavService'; -import { RolesAdministrationService } from './Administration/Roles/RolesAdministrationService'; -import { ServerConfigurationAuthenticationBootstrap } from './Administration/ServerConfiguration/ServerConfigurationAuthenticationBootstrap'; -import { CreateMetaParameterService } from './Administration/Users/MetaParameters/CreateMetaParameterService'; -import { UserFormBaseBootstrap } from './Administration/Users/UserForm/UserFormBaseBootstrap'; -import { UserFormService } from './Administration/Users/UserForm/UserFormService'; -import { UsersAdministrationNavigationService } from './Administration/Users/UsersAdministrationNavigationService'; -import { UsersAdministrationService } from './Administration/Users/UsersAdministrationService'; -import { CreateUserService } from './Administration/Users/UsersTable/CreateUserService'; import { AuthenticationLocaleService } from './AuthenticationLocaleService'; import { AuthenticationService } from './AuthenticationService'; import { AuthDialogService } from './Dialog/AuthDialogService'; @@ -41,25 +22,6 @@ export const manifest: PluginManifest = { AuthenticationService, AuthDialogService, PluginBootstrap, - UsersAdministrationService, AuthenticationLocaleService, - CreateUserService, - UsersAdministrationNavigationService, - ServerConfigurationAuthenticationBootstrap, - UserFormService, - CreateMetaParameterService, - UserFormBaseBootstrap, - AuthConfigurationsAdministrationService, - CreateAuthConfigurationService, - AuthConfigurationsAdministrationNavService, - AuthConfigurationFormService, - AuthConfigurationOptionsTabService, - RolesAdministrationService, - CreateRoleService, - RolesAdministrationNavService, - RoleFormService, - RoleOptionsTabService, - GrantedUsersTabService, - GrantedConnectionsTabService, ], }; diff --git a/webapp/packages/product-default/package.json b/webapp/packages/product-default/package.json index 2d52c9705a..c627cabcd8 100644 --- a/webapp/packages/product-default/package.json +++ b/webapp/packages/product-default/package.json @@ -23,6 +23,7 @@ "@cloudbeaver/core-product": "0.1.0", "@cloudbeaver/plugin-administration": "0.1.0", "@cloudbeaver/plugin-authentication": "0.1.0", + "@cloudbeaver/plugin-authentication-administration": "0.1.0", "@cloudbeaver/plugin-connection-custom": "0.1.0", "@cloudbeaver/plugin-connection-template": "0.1.0", "@cloudbeaver/plugin-data-export": "0.1.0", From 2b39cd878e9a819f92950fca7e216f7dd324a4ee Mon Sep 17 00:00:00 2001 From: Wroud Date: Tue, 9 Nov 2021 14:52:55 +0300 Subject: [PATCH 4/6] refactor: CB-1394 extract administration UI parts to separate plugins --- .../NavigationTree/NavigationTreeService.ts | 6 +- .../SettingsMenu/SettingsMenuService.ts | 32 +-------- .../NodesManager/NavNodeManagerService.ts | 6 +- .../core-blocks/src/useMapResource.ts | 1 - .../packages/core-bootstrap/src/manifest.ts | 28 -------- .../src/ConnectionInfoResource.ts | 32 +++++---- .../src/ConnectionsManagerService.ts | 37 ++-------- .../src/DatabaseConnection.ts | 26 +++++++ .../src/IConnectionsResource.ts | 18 +++++ webapp/packages/core-connections/src/index.ts | 28 +------- .../core-connections/src/isJDBCConnection.ts | 2 +- .../src/PluginBootstrap.ts | 51 ++++++++++++++ .../plugin-administration/src/manifest.ts | 2 + .../package.json | 1 + .../GrantedConnections/GrantedConnections.tsx | 3 +- .../Users/UserForm/UserFormController.ts | 3 +- .../src/Dialog/AuthDialog.tsx | 6 +- .../plugin-connection-template/package.json | 1 + .../ConnectionDialog/ConnectionController.ts | 4 +- .../src/ConnectionDialog/ConnectionDialog.tsx | 2 +- .../src/TemplateConnectionsResource.ts | 5 +- .../.gitignore | 17 +++++ .../package.json | 42 +++++++++++ .../Connections/ConnectionsAdministration.tsx | 0 .../ConnectionsAdministrationController.ts | 3 +- .../ConnectionsAdministrationNavService.ts | 0 .../ConnectionsAdministrationService.ts | 7 +- .../Connections/ConnectionsDrawerItem.tsx | 0 .../ConnectionsTable/Connection.tsx | 3 +- .../ConnectionDetailsStyles.ts | 0 .../ConnectionDetailsInfo/Origin.tsx | 0 .../ConnectionDetailsInfo/SSH.tsx | 2 +- .../ConnectionDetailsInfo/Template.tsx | 0 .../ConnectionsTable/ConnectionEdit.tsx | 3 +- .../ConnectionsTable/ConnectionsTable.tsx | 2 +- .../CreateConnection/CreateConnection.tsx | 4 +- .../CreateConnectionBaseBootstrap.ts | 0 .../Manual/ConnectionManualService.tsx | 2 +- .../Manual/CustomConnection.tsx | 2 +- .../CreateConnection/Manual/Driver.tsx | 3 +- .../CreateConnection/Manual/DriverList.tsx | 2 +- .../Search/ConnectionSearchService.tsx | 0 .../CreateConnection/Search/Database.tsx | 3 +- .../CreateConnection/Search/DatabaseList.tsx | 0 .../Search/SearchDatabase.tsx | 0 .../Connections/CreateConnectionService.ts | 4 +- .../src/Administration/ConnectionsResource.ts | 29 +++----- .../ConnectionAccess/ConnectionAccess.tsx | 4 +- .../ConnectionAccessGrantedList.tsx | 0 .../ConnectionAccess/ConnectionAccessList.tsx | 0 .../ConnectionAccessTabService.ts | 5 +- .../ConnectionAccessTableHeader.tsx | 0 .../ConnectionAccessTableInnerHeader.tsx | 0 .../ConnectionAccessTableItem.tsx | 0 .../IConnectionAccessTabState.ts | 0 .../ConnectionAccess/getFilteredSubjects.ts | 0 .../useConnectionAccessState.ts | 0 .../src/LocaleService.ts | 43 ++++++++++++ .../src/index.ts | 12 ++++ .../src/locales/en.ts | 8 +++ .../src/locales/it.ts | 5 ++ .../src/locales/ru.ts | 8 +++ .../src/manifest.ts | 37 ++++++++++ .../tsconfig.json | 8 +++ .../src/ConnectionAuthService.ts | 35 +++++++++- .../ConnectionAuthenticationDialog.tsx | 2 +- .../ConnectionAuthenticationForm.tsx | 2 +- .../IConnectionAuthenticationConfig.ts | 0 .../NetworkHandlerAuthForm.tsx | 3 +- .../NetworkHandlers.tsx | 0 .../src/ConnectionForm/ConnectionForm.tsx | 0 .../ConnectionFormBaseActions.tsx | 0 .../ConnectionForm/ConnectionFormService.ts | 0 .../src/ConnectionForm/ConnectionFormState.ts | 9 ++- .../Contexts/connectionConfigContext.ts | 0 .../connectionCredentialsStateContext.ts | 0 .../Contexts/connectionFormStateContext.ts | 0 .../ConnectionDriverPropertiesTabService.ts | 2 +- .../DriverProperties/DriverProperties.tsx | 2 +- .../ConnectionForm/IConnectionFormProps.ts | 7 +- .../Options/ConnectionOptionsTabService.ts | 70 +++++-------------- .../src/ConnectionForm/Options/Options.tsx | 5 +- .../ConnectionForm/Options/ParametersForm.tsx | 0 .../src/ConnectionForm/Options/useOptions.ts | 3 +- .../ConnectionFormAuthenticationAction.tsx | 2 +- .../ConnectionOriginInfoTabService.ts | 2 +- .../ConnectionForm/OriginInfo/OriginInfo.tsx | 0 .../OriginInfo/OriginInfoTab.tsx | 0 .../SSH/ConnectionSSHTabService.ts | 4 +- .../src/ConnectionForm/SSH/SSH.tsx | 2 +- .../src/ConnectionForm/SSH/SSHTab.tsx | 2 +- .../connectionFormConfigureContext.ts | 2 +- .../ConnectionForm/useConnectionFormState.ts | 5 +- .../DBAuthDialogController.ts | 3 +- .../DatabaseAuthDialog/DBAuthDialogFooter.tsx | 0 .../DatabaseAuthDialog/DatabaseAuthDialog.tsx | 3 +- .../PublicConnectionForm.tsx | 2 +- .../PublicConnectionFormService.ts | 7 +- .../packages/plugin-connections/src/index.ts | 16 +++++ .../plugin-connections/src/manifest.ts | 14 +++- webapp/packages/product-default/src/index.ts | 4 ++ 101 files changed, 465 insertions(+), 295 deletions(-) create mode 100644 webapp/packages/core-connections/src/DatabaseConnection.ts create mode 100644 webapp/packages/core-connections/src/IConnectionsResource.ts create mode 100644 webapp/packages/plugin-administration/src/PluginBootstrap.ts create mode 100644 webapp/packages/plugin-connections-administration/.gitignore create mode 100644 webapp/packages/plugin-connections-administration/package.json rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/ConnectionsAdministration.tsx (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/ConnectionsAdministrationController.ts (95%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/ConnectionsAdministrationNavService.ts (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/ConnectionsAdministrationService.ts (91%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/ConnectionsDrawerItem.tsx (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/ConnectionsTable/Connection.tsx (94%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/ConnectionDetailsStyles.ts (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/Origin.tsx (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/SSH.tsx (92%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/Template.tsx (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/ConnectionsTable/ConnectionEdit.tsx (91%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/ConnectionsTable/ConnectionsTable.tsx (96%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/CreateConnection/CreateConnection.tsx (97%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/CreateConnection/CreateConnectionBaseBootstrap.ts (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/CreateConnection/Manual/ConnectionManualService.tsx (94%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/CreateConnection/Manual/CustomConnection.tsx (94%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/CreateConnection/Manual/Driver.tsx (94%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/CreateConnection/Manual/DriverList.tsx (95%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/CreateConnection/Search/ConnectionSearchService.tsx (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/CreateConnection/Search/Database.tsx (97%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/CreateConnection/Search/DatabaseList.tsx (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/CreateConnection/Search/SearchDatabase.tsx (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/Connections/CreateConnectionService.ts (93%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/Administration/ConnectionsResource.ts (91%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/ConnectionForm/ConnectionAccess/ConnectionAccess.tsx (96%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/ConnectionForm/ConnectionAccess/ConnectionAccessGrantedList.tsx (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/ConnectionForm/ConnectionAccess/ConnectionAccessList.tsx (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/ConnectionForm/ConnectionAccess/ConnectionAccessTabService.ts (92%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/ConnectionForm/ConnectionAccess/ConnectionAccessTableHeader/ConnectionAccessTableHeader.tsx (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/ConnectionForm/ConnectionAccess/ConnectionAccessTableHeader/ConnectionAccessTableInnerHeader.tsx (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/ConnectionForm/ConnectionAccess/ConnectionAccessTableItem.tsx (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/ConnectionForm/ConnectionAccess/IConnectionAccessTabState.ts (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/ConnectionForm/ConnectionAccess/getFilteredSubjects.ts (100%) rename webapp/packages/{core-connections => plugin-connections-administration}/src/ConnectionForm/ConnectionAccess/useConnectionAccessState.ts (100%) create mode 100644 webapp/packages/plugin-connections-administration/src/LocaleService.ts create mode 100644 webapp/packages/plugin-connections-administration/src/index.ts create mode 100644 webapp/packages/plugin-connections-administration/src/locales/en.ts create mode 100644 webapp/packages/plugin-connections-administration/src/locales/it.ts create mode 100644 webapp/packages/plugin-connections-administration/src/locales/ru.ts create mode 100644 webapp/packages/plugin-connections-administration/src/manifest.ts create mode 100644 webapp/packages/plugin-connections-administration/tsconfig.json rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionAuthService.ts (60%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionAuthentication/ConnectionAuthenticationDialog.tsx (97%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionAuthentication/ConnectionAuthenticationForm.tsx (97%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionAuthentication/IConnectionAuthenticationConfig.ts (100%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionAuthentication/NetworkHandlerAuthForm.tsx (97%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionAuthentication/NetworkHandlers.tsx (100%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/ConnectionForm.tsx (100%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/ConnectionFormBaseActions.tsx (100%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/ConnectionFormService.ts (100%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/ConnectionFormState.ts (93%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/Contexts/connectionConfigContext.ts (100%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/Contexts/connectionCredentialsStateContext.ts (100%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/Contexts/connectionFormStateContext.ts (100%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/DriverProperties/ConnectionDriverPropertiesTabService.ts (97%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/DriverProperties/DriverProperties.tsx (98%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/IConnectionFormProps.ts (86%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/Options/ConnectionOptionsTabService.ts (77%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/Options/Options.tsx (96%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/Options/ParametersForm.tsx (100%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/Options/useOptions.ts (96%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/OriginInfo/ConnectionFormAuthenticationAction.tsx (95%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/OriginInfo/ConnectionOriginInfoTabService.ts (97%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/OriginInfo/OriginInfo.tsx (100%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/OriginInfo/OriginInfoTab.tsx (100%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/SSH/ConnectionSSHTabService.ts (96%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/SSH/SSH.tsx (98%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/SSH/SSHTab.tsx (92%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/connectionFormConfigureContext.ts (94%) rename webapp/packages/{core-connections => plugin-connections}/src/ConnectionForm/useConnectionFormState.ts (78%) rename webapp/packages/{core-connections => plugin-connections}/src/DatabaseAuthDialog/DBAuthDialogController.ts (96%) rename webapp/packages/{core-connections => plugin-connections}/src/DatabaseAuthDialog/DBAuthDialogFooter.tsx (100%) rename webapp/packages/{core-connections => plugin-connections}/src/DatabaseAuthDialog/DatabaseAuthDialog.tsx (97%) diff --git a/webapp/packages/core-app/src/NavigationTree/NavigationTreeService.ts b/webapp/packages/core-app/src/NavigationTree/NavigationTreeService.ts index a4de65db7d..72b0bc0831 100644 --- a/webapp/packages/core-app/src/NavigationTree/NavigationTreeService.ts +++ b/webapp/packages/core-app/src/NavigationTree/NavigationTreeService.ts @@ -8,7 +8,7 @@ import { action, makeObservable } from 'mobx'; -import { ConnectionAuthService, ConnectionInfoResource } from '@cloudbeaver/core-connections'; +import { ConnectionInfoResource, ConnectionsManagerService } from '@cloudbeaver/core-connections'; import { injectable } from '@cloudbeaver/core-di'; import { NotificationService } from '@cloudbeaver/core-events'; import { Executor, IExecutor } from '@cloudbeaver/core-executor'; @@ -37,7 +37,7 @@ export class NavigationTreeService extends View { constructor( private navNodeManagerService: NavNodeManagerService, private notificationService: NotificationService, - private connectionAuthService: ConnectionAuthService, + private connectionsManagerService: ConnectionsManagerService, private connectionInfoResource: ConnectionInfoResource, private navNodeExtensionsService: NavNodeExtensionsService, private navTreeResource: NavTreeResource @@ -152,7 +152,7 @@ export class NavigationTreeService extends View { } private async tryInitConnection(navNodeId: string): Promise { - const connection = await this.connectionAuthService.auth( + const connection = await this.connectionsManagerService.requireConnection( NodeManagerUtils.connectionNodeIdToConnectionId(navNodeId) ); diff --git a/webapp/packages/core-app/src/TopNavBar/SettingsMenu/SettingsMenuService.ts b/webapp/packages/core-app/src/TopNavBar/SettingsMenu/SettingsMenuService.ts index ded30eed20..e7693380d6 100644 --- a/webapp/packages/core-app/src/TopNavBar/SettingsMenu/SettingsMenuService.ts +++ b/webapp/packages/core-app/src/TopNavBar/SettingsMenu/SettingsMenuService.ts @@ -6,12 +6,10 @@ * you may not use this file except in compliance with the License. */ -import { EAdminPermission, AdministrationScreenService } from '@cloudbeaver/core-administration'; import { Bootstrap, injectable } from '@cloudbeaver/core-di'; import { IComputedMenuItemOptions, IMenuPanel, StaticMenu } from '@cloudbeaver/core-dialogs'; import { LocalizationService } from '@cloudbeaver/core-localization'; -import { ServerConfigResource, PermissionsService } from '@cloudbeaver/core-root'; -import { ScreenService } from '@cloudbeaver/core-routing'; +import { ServerConfigResource } from '@cloudbeaver/core-root'; import { ThemeService } from '@cloudbeaver/core-theming'; @injectable() @@ -25,10 +23,7 @@ export class SettingsMenuService extends Bootstrap { constructor( private localizationService: LocalizationService, private themeService: ThemeService, - private permissionsService: PermissionsService, private serverConfigResource: ServerConfigResource, - private screenService: ScreenService, - private administrationScreenService: AdministrationScreenService, ) { super(); } @@ -38,7 +33,6 @@ export class SettingsMenuService extends Bootstrap { } async load(): Promise { - this.addAdministration(); this.addThemes(); await this.addLocales(); } @@ -51,30 +45,6 @@ export class SettingsMenuService extends Bootstrap { this.menu.addMenuItem(panelId, options); } - private addAdministration() { - this.addMenuItem( - SettingsMenuService.settingsMenuToken, - { - id: 'administrationMenuEnter', - order: 0, - isHidden: () => !this.permissionsService.has(EAdminPermission.admin) - || this.screenService.isActive(AdministrationScreenService.screenName), - title: 'administration_menu_enter', - onClick: () => this.administrationScreenService.navigateToRoot(), - } - ); - this.addMenuItem( - SettingsMenuService.settingsMenuToken, - { - id: 'administrationMenuBack', - order: 0, - isHidden: () => !this.screenService.isActive(AdministrationScreenService.screenName), - title: 'administration_menu_back', - onClick: () => this.screenService.navigateToRoot(), - } - ); - } - private addThemes() { this.addMenuItem( SettingsMenuService.settingsMenuToken, diff --git a/webapp/packages/core-app/src/shared/NodesManager/NavNodeManagerService.ts b/webapp/packages/core-app/src/shared/NodesManager/NavNodeManagerService.ts index 1c628e9442..0b478e2ebf 100644 --- a/webapp/packages/core-app/src/shared/NodesManager/NavNodeManagerService.ts +++ b/webapp/packages/core-app/src/shared/NodesManager/NavNodeManagerService.ts @@ -7,7 +7,7 @@ */ import { - ConnectionAuthService, Connection, ConnectionInfoResource + Connection, ConnectionInfoResource, ConnectionsManagerService } from '@cloudbeaver/core-connections'; import { injectable, Bootstrap } from '@cloudbeaver/core-di'; import { NotificationService } from '@cloudbeaver/core-events'; @@ -94,7 +94,7 @@ export class NavNodeManagerService extends Bootstrap { readonly connectionInfo: ConnectionInfoResource, readonly navTree: NavTreeResource, readonly navNodeInfoResource: NavNodeInfoResource, - private connectionAuthService: ConnectionAuthService, + private connectionsManagerService: ConnectionsManagerService, private notificationService: NotificationService, private serverService: ServerService, navigationService: NavigationService @@ -322,7 +322,7 @@ export class NavNodeManagerService extends Bootstrap { if (NodeManagerUtils.isDatabaseObject(nodeInfo.nodeId) && nodeInfo.connection) { let connection: Connection | null; try { - connection = await this.connectionAuthService.auth(nodeInfo.connection.id); + connection = await this.connectionsManagerService.requireConnection(nodeInfo.connection.id); } catch (exception) { this.notificationService.logException(exception); throw exception; diff --git a/webapp/packages/core-blocks/src/useMapResource.ts b/webapp/packages/core-blocks/src/useMapResource.ts index 17a39afced..4e9f4e3e68 100644 --- a/webapp/packages/core-blocks/src/useMapResource.ts +++ b/webapp/packages/core-blocks/src/useMapResource.ts @@ -13,7 +13,6 @@ import { IServiceConstructor, useService } from '@cloudbeaver/core-di'; import { NotificationService } from '@cloudbeaver/core-events'; import { CachedResourceIncludeArgs, CachedMapResource, CachedMapResourceGetter, ResourceKey, CachedMapResourceValue, CachedMapResourceKey, CachedMapResourceArguments, CachedMapResourceLoader, ResourceKeyList, CachedMapResourceListGetter } from '@cloudbeaver/core-sdk'; -import { getComputed } from './getComputed'; import type { ILoadableState } from './Loader/Loader'; import { useObservableRef } from './useObservableRef'; diff --git a/webapp/packages/core-bootstrap/src/manifest.ts b/webapp/packages/core-bootstrap/src/manifest.ts index 07c206a2f1..cb9186f5be 100644 --- a/webapp/packages/core-bootstrap/src/manifest.ts +++ b/webapp/packages/core-bootstrap/src/manifest.ts @@ -53,21 +53,7 @@ import { DBDriverResource, NetworkHandlerResource, DatabaseAuthModelsResource, - ConnectionAuthService, - ConnectionsAdministrationService, - ConnectionsResource, ConnectionsLocaleService, - ConnectionsAdministrationNavService, - CreateConnectionService, - ConnectionManualService, - ConnectionSearchService, - CreateConnectionBaseBootstrap, - ConnectionFormService, - ConnectionOptionsTabService, - ConnectionDriverPropertiesTabService, - ConnectionSSHTabService, - ConnectionOriginInfoTabService, - ConnectionAccessTabService } from '@cloudbeaver/core-connections'; import type { PluginManifest } from '@cloudbeaver/core-di'; import { CommonDialogService, ContextMenuService } from '@cloudbeaver/core-dialogs'; @@ -132,12 +118,6 @@ export const coreManifests: PluginManifest[] = [ SessionExpireWarningDialogService, SessionExpiredDialogService, ConnectionsLocaleService, - ConnectionFormService, - ConnectionOptionsTabService, - ConnectionSSHTabService, - ConnectionOriginInfoTabService, - ConnectionAccessTabService, - ConnectionDriverPropertiesTabService, ConnectionDialogsService, ConnectionSchemaManagerService, ConnectionInfoResource, @@ -164,14 +144,6 @@ export const coreManifests: PluginManifest[] = [ TopNavService, NavigationTabsService, DatabaseAuthModelsResource, - ConnectionAuthService, - ConnectionsAdministrationNavService, - ConnectionManualService, - ConnectionSearchService, - CreateConnectionBaseBootstrap, - CreateConnectionService, - ConnectionsAdministrationService, - ConnectionsResource, NavNodeContextMenuService, NavigationTreeService, NavNodeManagerService, diff --git a/webapp/packages/core-connections/src/ConnectionInfoResource.ts b/webapp/packages/core-connections/src/ConnectionInfoResource.ts index e89747a179..c4f21a1728 100644 --- a/webapp/packages/core-connections/src/ConnectionInfoResource.ts +++ b/webapp/packages/core-connections/src/ConnectionInfoResource.ts @@ -28,7 +28,8 @@ import { CachedResourceIncludeArgs, } from '@cloudbeaver/core-sdk'; -import type { DatabaseConnection } from './Administration/ConnectionsResource'; +import type { DatabaseConnection } from './DatabaseConnection'; +import type { IConnectionsResource } from './IConnectionsResource'; export type Connection = DatabaseConnection & { authProperties?: UserConnectionAuthPropertiesFragment[] }; export type ConnectionInitConfig = Omit; @@ -45,7 +46,8 @@ export const DEFAULT_NAVIGATOR_VIEW_SETTINGS: NavigatorSettingsInput = { }; @injectable() -export class ConnectionInfoResource extends CachedMapResource { +export class ConnectionInfoResource extends CachedMapResource + implements IConnectionsResource { readonly onConnectionCreate: ISyncExecutor; readonly onConnectionClose: ISyncExecutor; @@ -81,7 +83,7 @@ export class ConnectionInfoResource extends CachedMapResource { - const { connection } = await this.graphQLService.sdk.createConnectionFromTemplate({ - templateId, - connectionName, - ...this.getDefaultIncludes(), - ...this.getIncludesMap(), - }); - return this.add(connection); - } - - async createConnection(config: ConnectionConfig): Promise { + async create(config: ConnectionConfig): Promise { const { connection } = await this.graphQLService.sdk.createConnection({ config, ...this.getDefaultIncludes(), @@ -122,7 +114,7 @@ export class ConnectionInfoResource extends CachedMapResource { + async test(config: ConnectionConfig): Promise { const { connection } = await this.graphQLService.sdk.testConnection({ config, }); @@ -141,6 +133,16 @@ export class ConnectionInfoResource extends CachedMapResource { + const { connection } = await this.graphQLService.sdk.createConnectionFromTemplate({ + templateId, + connectionName, + ...this.getDefaultIncludes(), + ...this.getIncludesMap(), + }); + return this.add(connection); + } + addList(connections: Connection[]): Connection[] { const newConnections = connections.filter(connection => !this.data.has(connection.id)); const key = this.updateConnection(...connections); diff --git a/webapp/packages/core-connections/src/ConnectionsManagerService.ts b/webapp/packages/core-connections/src/ConnectionsManagerService.ts index 87a523e079..28126a0b03 100644 --- a/webapp/packages/core-connections/src/ConnectionsManagerService.ts +++ b/webapp/packages/core-connections/src/ConnectionsManagerService.ts @@ -6,35 +6,30 @@ * you may not use this file except in compliance with the License. */ -import { Subject } from 'rxjs'; - import { ProcessSnackbar } from '@cloudbeaver/core-blocks'; import { injectable } from '@cloudbeaver/core-di'; import { CommonDialogService, ConfirmationDialogDelete, DialogueStateResult } from '@cloudbeaver/core-dialogs'; import { NotificationService } from '@cloudbeaver/core-events'; -import { Executor, IExecutionContextProvider, IExecutor } from '@cloudbeaver/core-executor'; +import { Executor, IExecutor } from '@cloudbeaver/core-executor'; -import { ConnectionAuthService } from './ConnectionAuthService'; import { ConnectionInfoResource, Connection } from './ConnectionInfoResource'; import { ContainerResource, ObjectContainer } from './ContainerResource'; import { EConnectionFeature } from './EConnectionFeature'; @injectable() export class ConnectionsManagerService { - onOpenConnection = new Subject(); + readonly connectionExecutor: IExecutor; + private disconnecting: boolean; - private connectionExecutor: IExecutor; constructor( readonly connectionInfo: ConnectionInfoResource, readonly connectionObjectContainers: ContainerResource, private notificationService: NotificationService, - private connectionAuthService: ConnectionAuthService, private commonDialogService: CommonDialogService ) { this.disconnecting = false; this.connectionExecutor = new Executor(null, (active, current) => active === current); - this.connectionExecutor.addHandler(this.connectionDialog.bind(this)); } async requireConnection(connectionId: string | null = null): Promise { @@ -88,35 +83,12 @@ export class ConnectionsManagerService { return !!this.connectionInfo.values.length; } - private connectionContext() { + connectionContext() { return { connection: null as (Connection | null), }; } - private async connectionDialog(connectionId: string | null, context: IExecutionContextProvider) { - const connection = context.getContext(this.connectionContext); - - if (!connectionId) { - if (!this.hasAnyConnection()) { - return; - } - connectionId = this.connectionInfo.values[0].id; - } - - try { - const tempConnection = await this.connectionAuthService.auth(connectionId); - - if (!tempConnection?.connected) { - return; - } - connection.connection = tempConnection; - } catch (exception) { - this.notificationService.logException(exception); - throw exception; - } - } - private async _closeConnectionAsync(connection: Connection) { if (!connection.connected) { return; @@ -165,6 +137,5 @@ export class ConnectionsManagerService { private addConnection(connection: Connection) { this.connectionInfo.set(connection.id, connection); - this.onOpenConnection.next(connection); } } diff --git a/webapp/packages/core-connections/src/DatabaseConnection.ts b/webapp/packages/core-connections/src/DatabaseConnection.ts new file mode 100644 index 0000000000..48a9a77757 --- /dev/null +++ b/webapp/packages/core-connections/src/DatabaseConnection.ts @@ -0,0 +1,26 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2021 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ + +import { AUTH_PROVIDER_LOCAL_ID } from '@cloudbeaver/core-authentication'; +import type { DatabaseConnectionFragment } from '@cloudbeaver/core-sdk'; + +export type DatabaseConnection = DatabaseConnectionFragment; + +export function isLocalConnection(connection: DatabaseConnection): boolean { + if (!connection.origin) { + return true; + } + return connection.origin.type === AUTH_PROVIDER_LOCAL_ID; +} + +export function isCloudConnection(connection: DatabaseConnection): boolean { + if (!connection.origin) { + return false; + } + return connection.origin.type === 'cloud'; +} diff --git a/webapp/packages/core-connections/src/IConnectionsResource.ts b/webapp/packages/core-connections/src/IConnectionsResource.ts new file mode 100644 index 0000000000..3570dfc871 --- /dev/null +++ b/webapp/packages/core-connections/src/IConnectionsResource.ts @@ -0,0 +1,18 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2021 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ + +import type { CachedMapResource, ConnectionConfig, GetConnectionsQueryVariables, TestConnectionMutation } from '@cloudbeaver/core-sdk'; + +import type { DatabaseConnection } from './DatabaseConnection'; + +export interface IConnectionsResource + extends CachedMapResource { + update: (config: ConnectionConfig) => Promise; + create: (config: ConnectionConfig) => Promise; + test: (config: ConnectionConfig) => Promise; +} diff --git a/webapp/packages/core-connections/src/index.ts b/webapp/packages/core-connections/src/index.ts index e64ff3cc4b..56f394d996 100644 --- a/webapp/packages/core-connections/src/index.ts +++ b/webapp/packages/core-connections/src/index.ts @@ -1,43 +1,21 @@ -export * from './Administration/Connections/ConnectionsAdministration'; -export * from './Administration/Connections/ConnectionsAdministrationNavService'; -export * from './Administration/Connections/ConnectionsAdministrationService'; -export * from './Administration/Connections/CreateConnection/Manual/ConnectionManualService'; -export * from './Administration/Connections/CreateConnection/Search/ConnectionSearchService'; -export * from './Administration/Connections/CreateConnection/CreateConnectionBaseBootstrap'; -export * from './Administration/Connections/CreateConnectionService'; -export * from './Administration/ConnectionsResource'; export * from './ConnectionExecutionContext/ConnectionExecutionContext'; export * from './ConnectionExecutionContext/ConnectionExecutionContextResource'; export * from './ConnectionExecutionContext/ConnectionExecutionContextService'; export * from './ConnectionExecutionContext/IConnectionExecutionContext'; export * from './ConnectionExecutionContext/IConnectionExecutionContextInfo'; -export * from './ConnectionForm/Options/ConnectionOptionsTabService'; -export * from './ConnectionForm/DriverProperties/ConnectionDriverPropertiesTabService'; -export * from './ConnectionForm/SSH/ConnectionSSHTabService'; -export * from './ConnectionForm/OriginInfo/ConnectionOriginInfoTabService'; -export * from './ConnectionForm/ConnectionAccess/ConnectionAccessTabService'; -export * from './ConnectionForm/Contexts/connectionConfigContext'; -export * from './ConnectionForm/ConnectionFormBaseActions'; -export * from './ConnectionForm/connectionFormConfigureContext'; -export * from './ConnectionForm/ConnectionForm'; -export * from './ConnectionForm/ConnectionFormService'; -export * from './ConnectionForm/ConnectionFormState'; -export * from './ConnectionForm/Contexts/connectionFormStateContext'; -export * from './ConnectionForm/IConnectionFormProps'; -export * from './ConnectionForm/useConnectionFormState'; -export * from './ConnectionAuthentication/IConnectionAuthenticationConfig'; -export * from './ConnectionAuthentication/ConnectionAuthenticationForm'; export * from './extensions/IConnectionProvider'; export * from './extensions/IConnectionSetter'; export * from './ConnectionsManagerService'; export * from './ConnectionInfoResource'; -export * from './ConnectionAuthService'; export * from './EConnectionFeature'; export * from './ContainerResource'; export * from './ConnectionsLocaleService'; export * from './DatabaseAuthModelsResource'; +export * from './DatabaseConnection'; export * from './DBDriverResource'; +export * from './IConnectionsResource'; +export * from './isJDBCConnection'; export * from './NetworkHandlerResource'; export * from './useConnectionInfo'; export * from './useDBDriver'; diff --git a/webapp/packages/core-connections/src/isJDBCConnection.ts b/webapp/packages/core-connections/src/isJDBCConnection.ts index 952ec20923..10d49c8381 100644 --- a/webapp/packages/core-connections/src/isJDBCConnection.ts +++ b/webapp/packages/core-connections/src/isJDBCConnection.ts @@ -6,7 +6,7 @@ * you may not use this file except in compliance with the License. */ -import type { DatabaseConnection } from './Administration/ConnectionsResource'; +import type { DatabaseConnection } from './DatabaseConnection'; import type { DBDriver } from './DBDriverResource'; export function isJDBCConnection(driver?: DBDriver, connection?: DatabaseConnection): boolean { diff --git a/webapp/packages/plugin-administration/src/PluginBootstrap.ts b/webapp/packages/plugin-administration/src/PluginBootstrap.ts new file mode 100644 index 0000000000..9c5c08677c --- /dev/null +++ b/webapp/packages/plugin-administration/src/PluginBootstrap.ts @@ -0,0 +1,51 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2021 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ + +import { EAdminPermission, AdministrationScreenService } from '@cloudbeaver/core-administration'; +import { SettingsMenuService } from '@cloudbeaver/core-app'; +import { Bootstrap, injectable } from '@cloudbeaver/core-di'; +import { PermissionsService } from '@cloudbeaver/core-root'; +import { ScreenService } from '@cloudbeaver/core-routing'; + +@injectable() +export class PluginBootstrap extends Bootstrap { + constructor( + private settingsMenuService: SettingsMenuService, + private permissionsService: PermissionsService, + private screenService: ScreenService, + private administrationScreenService: AdministrationScreenService, + ) { + super(); + } + + register(): void { + this.settingsMenuService.addMenuItem( + SettingsMenuService.settingsMenuToken, + { + id: 'administrationMenuEnter', + order: 0, + isHidden: () => !this.permissionsService.has(EAdminPermission.admin) + || this.screenService.isActive(AdministrationScreenService.screenName), + title: 'administration_menu_enter', + onClick: () => this.administrationScreenService.navigateToRoot(), + } + ); + this.settingsMenuService.addMenuItem( + SettingsMenuService.settingsMenuToken, + { + id: 'administrationMenuBack', + order: 0, + isHidden: () => !this.screenService.isActive(AdministrationScreenService.screenName), + title: 'administration_menu_back', + onClick: () => this.screenService.navigateToRoot(), + } + ); + } + + load(): void {} +} diff --git a/webapp/packages/plugin-administration/src/manifest.ts b/webapp/packages/plugin-administration/src/manifest.ts index a7192277ca..2ccbaf29ea 100644 --- a/webapp/packages/plugin-administration/src/manifest.ts +++ b/webapp/packages/plugin-administration/src/manifest.ts @@ -12,6 +12,7 @@ import { ConfigurationWizardPagesBootstrapService } from './ConfigurationWizard/ import { ServerConfigurationService } from './ConfigurationWizard/ServerConfiguration/ServerConfigurationService'; import { ServerConfigurationAdministrationNavService } from './ConfigurationWizard/ServerConfigurationAdministrationNavService'; import { LocaleService } from './LocaleService'; +import { PluginBootstrap } from './PluginBootstrap'; export const manifest: PluginManifest = { info: { @@ -23,5 +24,6 @@ export const manifest: PluginManifest = { ServerConfigurationAdministrationNavService, ConfigurationWizardPagesBootstrapService, LocaleService, + PluginBootstrap, ], }; diff --git a/webapp/packages/plugin-authentication-administration/package.json b/webapp/packages/plugin-authentication-administration/package.json index 4eabcaece1..29f36b16c0 100644 --- a/webapp/packages/plugin-authentication-administration/package.json +++ b/webapp/packages/plugin-authentication-administration/package.json @@ -34,6 +34,7 @@ "@cloudbeaver/core-utils": "^0.1.0", "@cloudbeaver/plugin-administration": "^0.1.0", "@cloudbeaver/plugin-authentication-administration": "^0.1.0", + "@cloudbeaver/plugin-connections-administration": "^0.1.0", "react": "^16.x.x", "rxjs": "^6.x.x", "mobx": "^5.x.x", diff --git a/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnections.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnections.tsx index 6e8347b51a..7a94c0e142 100644 --- a/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnections.tsx +++ b/webapp/packages/plugin-authentication-administration/src/Administration/Roles/GrantedConnections/GrantedConnections.tsx @@ -16,10 +16,11 @@ import { InfoItem, Loader, TabContainerPanelComponent, TextPlaceholder, useMapResource, useTab, } from '@cloudbeaver/core-blocks'; -import { ConnectionsResource, DBDriverResource, isCloudConnection } from '@cloudbeaver/core-connections'; +import { DBDriverResource, isCloudConnection } from '@cloudbeaver/core-connections'; import { TLocalizationToken, useTranslate } from '@cloudbeaver/core-localization'; import { CachedMapAllKey } from '@cloudbeaver/core-sdk'; import { useStyles } from '@cloudbeaver/core-theming'; +import { ConnectionsResource } from '@cloudbeaver/plugin-connections-administration'; import type { IRoleFormProps } from '../IRoleFormProps'; import { ConnectionList } from './ConnectionList'; diff --git a/webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/UserFormController.ts b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/UserFormController.ts index bb1777d7ac..1b7624707b 100644 --- a/webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/UserFormController.ts +++ b/webapp/packages/plugin-authentication-administration/src/Administration/Users/UserForm/UserFormController.ts @@ -9,13 +9,14 @@ import { observable, computed, makeObservable } from 'mobx'; import { compareRoles, isLocalUser, RoleInfo, RolesResource, UsersResource } from '@cloudbeaver/core-authentication'; -import { DatabaseConnection, ConnectionsResource, DBDriverResource } from '@cloudbeaver/core-connections'; +import { DatabaseConnection, DBDriverResource } from '@cloudbeaver/core-connections'; import { injectable, IInitializableController, IDestructibleController } from '@cloudbeaver/core-di'; import { CommonDialogService } from '@cloudbeaver/core-dialogs'; import { ENotificationType, NotificationService } from '@cloudbeaver/core-events'; import type { TLocalizationToken } from '@cloudbeaver/core-localization'; import { ErrorDetailsDialog } from '@cloudbeaver/core-notifications'; import { GQLErrorCatcher, AdminConnectionGrantInfo, AdminSubjectType, AdminUserInfo } from '@cloudbeaver/core-sdk'; +import { ConnectionsResource } from '@cloudbeaver/plugin-connections-administration'; interface IStatusMessage { status: ENotificationType; diff --git a/webapp/packages/plugin-authentication/src/Dialog/AuthDialog.tsx b/webapp/packages/plugin-authentication/src/Dialog/AuthDialog.tsx index 7cc570b880..33a60badd7 100644 --- a/webapp/packages/plugin-authentication/src/Dialog/AuthDialog.tsx +++ b/webapp/packages/plugin-authentication/src/Dialog/AuthDialog.tsx @@ -18,7 +18,7 @@ import { useController, useService } from '@cloudbeaver/core-di'; import { CommonDialogWrapper, DialogComponent } from '@cloudbeaver/core-dialogs'; import { Translate, useTranslate } from '@cloudbeaver/core-localization'; import { composes, useStyles } from '@cloudbeaver/core-theming'; -import { ServerConfigurationAdministrationNavService } from '@cloudbeaver/plugin-administration'; +// import { ServerConfigurationAdministrationNavService } from '@cloudbeaver/plugin-administration'; import { AuthDialogController } from './AuthDialogController'; import { AuthDialogFooter } from './AuthDialogFooter'; @@ -81,7 +81,7 @@ export const AuthDialog: DialogComponent = observer(function options, rejectDialog, }) { - const authConfigurationsAdministrationNavService = useService(ServerConfigurationAdministrationNavService); + // const authConfigurationsAdministrationNavService = useService(ServerConfigurationAdministrationNavService); const authProvidersResource = useService(AuthProvidersResource); const administrationScreenService = useService(AdministrationScreenService); const userInfo = useService(UserInfoResource); @@ -121,7 +121,7 @@ export const AuthDialog: DialogComponent = observer(function function navToSettings() { rejectDialog(); - authConfigurationsAdministrationNavService.navToSettings(); + // authConfigurationsAdministrationNavService.navToSettings(); } function renderForm(provider: AuthProvider) { diff --git a/webapp/packages/plugin-connection-template/package.json b/webapp/packages/plugin-connection-template/package.json index 33a7c9d4d3..d69cd356f5 100644 --- a/webapp/packages/plugin-connection-template/package.json +++ b/webapp/packages/plugin-connection-template/package.json @@ -30,6 +30,7 @@ "@cloudbeaver/core-settings": "^0.1.0", "@cloudbeaver/core-theming": "^0.1.0", "@cloudbeaver/core-utils": "^0.1.0", + "@cloudbeaver/plugin-connections": "^0.1.0", "react": "^16.x.x", "rxjs": "^6.x.x", "mobx": "^5.x.x", diff --git a/webapp/packages/plugin-connection-template/src/ConnectionDialog/ConnectionController.ts b/webapp/packages/plugin-connection-template/src/ConnectionDialog/ConnectionController.ts index 83ac3ecbc7..46c1e08490 100644 --- a/webapp/packages/plugin-connection-template/src/ConnectionDialog/ConnectionController.ts +++ b/webapp/packages/plugin-connection-template/src/ConnectionDialog/ConnectionController.ts @@ -9,13 +9,13 @@ import { observable, makeObservable } from 'mobx'; import { DBDriverResource, Connection, DatabaseAuthModelsResource, ConnectionInfoResource, DBDriver, ConnectionInitConfig } from '@cloudbeaver/core-connections'; -import type { IConnectionAuthenticationConfig } from '@cloudbeaver/core-connections'; import { injectable, IInitializableController, IDestructibleController } from '@cloudbeaver/core-di'; import { CommonDialogService } from '@cloudbeaver/core-dialogs'; import { NotificationService } from '@cloudbeaver/core-events'; import { ErrorDetailsDialog } from '@cloudbeaver/core-notifications'; import { DatabaseAuthModel, DetailsError } from '@cloudbeaver/core-sdk'; import { getUniqueName } from '@cloudbeaver/core-utils'; +import type { IConnectionAuthenticationConfig } from '@cloudbeaver/plugin-connections'; import { TemplateConnectionsResource } from '../TemplateConnectionsResource'; @@ -33,7 +33,7 @@ export interface IConnectionController { @injectable() export class ConnectionController - implements IInitializableController, IDestructibleController, IConnectionController { +implements IInitializableController, IDestructibleController, IConnectionController { step = ConnectionStep.ConnectionTemplateSelect; isLoading = true; isConnecting = false; diff --git a/webapp/packages/plugin-connection-template/src/ConnectionDialog/ConnectionDialog.tsx b/webapp/packages/plugin-connection-template/src/ConnectionDialog/ConnectionDialog.tsx index f9aafdded6..e0e9c13a67 100644 --- a/webapp/packages/plugin-connection-template/src/ConnectionDialog/ConnectionDialog.tsx +++ b/webapp/packages/plugin-connection-template/src/ConnectionDialog/ConnectionDialog.tsx @@ -18,11 +18,11 @@ import { Loader, useFocus, } from '@cloudbeaver/core-blocks'; -import { ConnectionAuthenticationForm } from '@cloudbeaver/core-connections'; import { useController } from '@cloudbeaver/core-di'; import { CommonDialogWrapper, DialogComponent } from '@cloudbeaver/core-dialogs'; import { useTranslate } from '@cloudbeaver/core-localization'; import { composes, useStyles } from '@cloudbeaver/core-theming'; +import { ConnectionAuthenticationForm } from '@cloudbeaver/plugin-connections'; import { ConnectionController, ConnectionStep } from './ConnectionController'; import { ConnectionDialogFooter } from './ConnectionDialogFooter'; diff --git a/webapp/packages/plugin-connection-template/src/TemplateConnectionsResource.ts b/webapp/packages/plugin-connection-template/src/TemplateConnectionsResource.ts index 9a50a225ca..9601416b8b 100644 --- a/webapp/packages/plugin-connection-template/src/TemplateConnectionsResource.ts +++ b/webapp/packages/plugin-connection-template/src/TemplateConnectionsResource.ts @@ -6,7 +6,7 @@ * you may not use this file except in compliance with the License. */ -import { Connection, ConnectionsResource } from '@cloudbeaver/core-connections'; +import type { Connection } from '@cloudbeaver/core-connections'; import { injectable } from '@cloudbeaver/core-di'; import { EPermission, PermissionsResource } from '@cloudbeaver/core-root'; import { GraphQLService, CachedDataResource } from '@cloudbeaver/core-sdk'; @@ -16,12 +16,9 @@ export class TemplateConnectionsResource extends CachedDataResource undefined); - permissionsResource .require(this, EPermission.public) .outdateResource(this); diff --git a/webapp/packages/plugin-connections-administration/.gitignore b/webapp/packages/plugin-connections-administration/.gitignore new file mode 100644 index 0000000000..15bc16c7c3 --- /dev/null +++ b/webapp/packages/plugin-connections-administration/.gitignore @@ -0,0 +1,17 @@ +# dependencies +/node_modules + +# testing +/coverage + +# production +/lib + +# misc +.DS_Store +.env* + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/webapp/packages/plugin-connections-administration/package.json b/webapp/packages/plugin-connections-administration/package.json new file mode 100644 index 0000000000..069583b973 --- /dev/null +++ b/webapp/packages/plugin-connections-administration/package.json @@ -0,0 +1,42 @@ +{ + "name": "@cloudbeaver/plugin-connections-administration", + "sideEffects": false, + "version": "0.1.0", + "description": "", + "license": "Apache-2.0", + "main": "lib/index.js", + "module": "lib/index.js", + "types": "src/index.ts", + "scripts": { + "prebuild": "rimraf lib/*", + "build": "webpack --config ../../configs/webpack.plugin.config.js", + "postbuild": "tsc", + "lint": "eslint ./src/ --ext .ts,.tsx", + "lint-fix": "eslint ./src/ --ext .ts,.tsx --fix" + }, + "peerDependencies": { + "@cloudbeaver/core-app": "^0.1.0", + "@cloudbeaver/core-blocks": "^0.1.0", + "@cloudbeaver/core-connections": "^0.1.0", + "@cloudbeaver/core-di": "^0.1.0", + "@cloudbeaver/core-dialogs": "^0.1.0", + "@cloudbeaver/core-events": "^0.1.0", + "@cloudbeaver/core-extensions": "^0.1.0", + "@cloudbeaver/core-localization": "^0.1.0", + "@cloudbeaver/core-plugin": "^0.1.0", + "@cloudbeaver/core-product": "^0.1.0", + "@cloudbeaver/core-root": "^0.1.0", + "@cloudbeaver/core-sdk": "^0.1.0", + "@cloudbeaver/core-settings": "^0.1.0", + "@cloudbeaver/core-theming": "^0.1.0", + "@cloudbeaver/core-ui": "^0.1.0", + "@cloudbeaver/core-utils": "^0.1.0", + "@cloudbeaver/core-view": "^0.1.0", + "@cloudbeaver/plugin-connections": "^0.1.0", + "react": "^16.x.x", + "rxjs": "^6.x.x", + "mobx": "^5.x.x", + "mobx-react-lite": "^3.x.x", + "reshadow": "^0.x.x" + } +} diff --git a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsAdministration.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsAdministration.tsx similarity index 100% rename from webapp/packages/core-connections/src/Administration/Connections/ConnectionsAdministration.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsAdministration.tsx diff --git a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsAdministrationController.ts b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsAdministrationController.ts similarity index 95% rename from webapp/packages/core-connections/src/Administration/Connections/ConnectionsAdministrationController.ts rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsAdministrationController.ts index f65d9a66a6..606884ce37 100644 --- a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsAdministrationController.ts +++ b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsAdministrationController.ts @@ -8,13 +8,14 @@ import { observable, computed, makeObservable } from 'mobx'; +import type { DatabaseConnection } from '@cloudbeaver/core-connections'; import { injectable } from '@cloudbeaver/core-di'; import { CommonDialogService, ConfirmationDialogDelete, DialogueStateResult } from '@cloudbeaver/core-dialogs'; import { NotificationService } from '@cloudbeaver/core-events'; import { LocalizationService } from '@cloudbeaver/core-localization'; import { resourceKeyList } from '@cloudbeaver/core-sdk'; -import { DatabaseConnection, compareConnections, ConnectionsResource } from '../ConnectionsResource'; +import { compareConnections, ConnectionsResource } from '../ConnectionsResource'; @injectable() export class ConnectionsAdministrationController { diff --git a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsAdministrationNavService.ts b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsAdministrationNavService.ts similarity index 100% rename from webapp/packages/core-connections/src/Administration/Connections/ConnectionsAdministrationNavService.ts rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsAdministrationNavService.ts diff --git a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsAdministrationService.ts b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsAdministrationService.ts similarity index 91% rename from webapp/packages/core-connections/src/Administration/Connections/ConnectionsAdministrationService.ts rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsAdministrationService.ts index bb69e97e6f..3f13ea13d7 100644 --- a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsAdministrationService.ts +++ b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsAdministrationService.ts @@ -8,14 +8,12 @@ import { AdministrationItemService, AdministrationItemType } from '@cloudbeaver/core-administration'; import { PlaceholderContainer } from '@cloudbeaver/core-blocks'; +import { DatabaseConnection, DBDriverResource, NetworkHandlerResource } from '@cloudbeaver/core-connections'; import { injectable, Bootstrap } from '@cloudbeaver/core-di'; import { NotificationService } from '@cloudbeaver/core-events'; import { SessionDataResource } from '@cloudbeaver/core-root'; -import { ConnectionInfoResource } from '../../ConnectionInfoResource'; -import { DBDriverResource } from '../../DBDriverResource'; -import { NetworkHandlerResource } from '../../NetworkHandlerResource'; -import { DatabaseConnection, ConnectionsResource } from '../ConnectionsResource'; +import { ConnectionsResource } from '../ConnectionsResource'; import { ConnectionsAdministration } from './ConnectionsAdministration'; import { ConnectionsDrawerItem } from './ConnectionsDrawerItem'; import { Origin } from './ConnectionsTable/ConnectionDetailsInfo/Origin'; @@ -37,7 +35,6 @@ export class ConnectionsAdministrationService extends Bootstrap { private connectionsResource: ConnectionsResource, private dbDriverResource: DBDriverResource, private readonly createConnectionService: CreateConnectionService, - private readonly connectionInfoResource: ConnectionInfoResource, private readonly sessionDataResource: SessionDataResource, private readonly networkHandlerResource: NetworkHandlerResource ) { diff --git a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsDrawerItem.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsDrawerItem.tsx similarity index 100% rename from webapp/packages/core-connections/src/Administration/Connections/ConnectionsDrawerItem.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsDrawerItem.tsx diff --git a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/Connection.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/Connection.tsx similarity index 94% rename from webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/Connection.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/Connection.tsx index ae31cd72dd..e093802c04 100644 --- a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/Connection.tsx +++ b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/Connection.tsx @@ -12,11 +12,10 @@ import styled, { css } from 'reshadow'; import { TableItem, TableColumnValue, TableItemSelect, TableItemExpand, StaticImage, Placeholder } from '@cloudbeaver/core-blocks'; -import { DBDriverResource } from '@cloudbeaver/core-connections'; +import { DatabaseConnection, DBDriverResource } from '@cloudbeaver/core-connections'; import { useService } from '@cloudbeaver/core-di'; import { useStyles } from '@cloudbeaver/core-theming'; -import type { DatabaseConnection } from '../../ConnectionsResource'; import { ConnectionsAdministrationService } from '../ConnectionsAdministrationService'; import { ConnectionEdit } from './ConnectionEdit'; diff --git a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/ConnectionDetailsStyles.ts b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/ConnectionDetailsStyles.ts similarity index 100% rename from webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/ConnectionDetailsStyles.ts rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/ConnectionDetailsStyles.ts diff --git a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/Origin.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/Origin.tsx similarity index 100% rename from webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/Origin.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/Origin.tsx diff --git a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/SSH.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/SSH.tsx similarity index 92% rename from webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/SSH.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/SSH.tsx index 3607ab3479..6dc38eebf5 100644 --- a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/SSH.tsx +++ b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/SSH.tsx @@ -10,9 +10,9 @@ import { observer } from 'mobx-react-lite'; import styled from 'reshadow'; import { PlaceholderComponent, StaticImage, useMapResource } from '@cloudbeaver/core-blocks'; +import { NetworkHandlerResource, SSH_TUNNEL_ID } from '@cloudbeaver/core-connections'; import { useTranslate } from '@cloudbeaver/core-localization'; -import { NetworkHandlerResource, SSH_TUNNEL_ID } from '../../../../NetworkHandlerResource'; import type { IConnectionDetailsPlaceholderProps } from '../../ConnectionsAdministrationService'; import { CONNECTION_DETAILS_STYLES } from './ConnectionDetailsStyles'; diff --git a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/Template.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/Template.tsx similarity index 100% rename from webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/Template.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionDetailsInfo/Template.tsx diff --git a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionEdit.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionEdit.tsx similarity index 91% rename from webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionEdit.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionEdit.tsx index 63f89825e3..775191c12f 100644 --- a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionEdit.tsx +++ b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionEdit.tsx @@ -12,9 +12,8 @@ import styled, { css } from 'reshadow'; import { useService } from '@cloudbeaver/core-di'; import { useStyles, composes } from '@cloudbeaver/core-theming'; +import { ConnectionForm, useConnectionFormState } from '@cloudbeaver/plugin-connections'; -import { ConnectionForm } from '../../../ConnectionForm/ConnectionForm'; -import { useConnectionFormState } from '../../../ConnectionForm/useConnectionFormState'; import { ConnectionsResource } from '../../ConnectionsResource'; const styles = composes( diff --git a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionsTable.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionsTable.tsx similarity index 96% rename from webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionsTable.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionsTable.tsx index 7b4a34d509..057c874513 100644 --- a/webapp/packages/core-connections/src/Administration/Connections/ConnectionsTable/ConnectionsTable.tsx +++ b/webapp/packages/plugin-connections-administration/src/Administration/Connections/ConnectionsTable/ConnectionsTable.tsx @@ -12,10 +12,10 @@ import styled, { css, use } from 'reshadow'; import { Table, TableHeader, TableColumnHeader, TableBody, TableSelect } from '@cloudbeaver/core-blocks'; +import type { DatabaseConnection } from '@cloudbeaver/core-connections'; import { useTranslate } from '@cloudbeaver/core-localization'; import { useStyles, composes } from '@cloudbeaver/core-theming'; -import type { DatabaseConnection } from '../../ConnectionsResource'; import { Connection } from './Connection'; const styles = composes( diff --git a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/CreateConnection.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/CreateConnection.tsx similarity index 97% rename from webapp/packages/core-connections/src/Administration/Connections/CreateConnection/CreateConnection.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/CreateConnection.tsx index 35e5b26eb7..e1613c6cde 100644 --- a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/CreateConnection.tsx +++ b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/CreateConnection.tsx @@ -12,12 +12,12 @@ import styled, { css } from 'reshadow'; import { TabsState, TabList, IconButton, Loader, StaticImage, Icon, UNDERLINE_TAB_STYLES, TabPanelList, useMapResource } from '@cloudbeaver/core-blocks'; +import { DBDriverResource } from '@cloudbeaver/core-connections'; import { useService } from '@cloudbeaver/core-di'; import { useTranslate } from '@cloudbeaver/core-localization'; import { useStyles, composes } from '@cloudbeaver/core-theming'; +import { ConnectionForm } from '@cloudbeaver/plugin-connections'; -import { ConnectionForm } from '../../../ConnectionForm/ConnectionForm'; -import { DBDriverResource } from '../../../DBDriverResource'; import { CreateConnectionService } from '../CreateConnectionService'; const styles = composes( diff --git a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/CreateConnectionBaseBootstrap.ts b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/CreateConnectionBaseBootstrap.ts similarity index 100% rename from webapp/packages/core-connections/src/Administration/Connections/CreateConnection/CreateConnectionBaseBootstrap.ts rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/CreateConnectionBaseBootstrap.ts diff --git a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Manual/ConnectionManualService.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Manual/ConnectionManualService.tsx similarity index 94% rename from webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Manual/ConnectionManualService.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Manual/ConnectionManualService.tsx index 2221c2a685..c6cf4355e5 100644 --- a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Manual/ConnectionManualService.tsx +++ b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Manual/ConnectionManualService.tsx @@ -6,9 +6,9 @@ * you may not use this file except in compliance with the License. */ +import { DBDriverResource } from '@cloudbeaver/core-connections'; import { injectable } from '@cloudbeaver/core-di'; -import { DBDriverResource } from '../../../../DBDriverResource'; import { ConnectionsResource } from '../../../ConnectionsResource'; import { CreateConnectionService } from '../../CreateConnectionService'; diff --git a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Manual/CustomConnection.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Manual/CustomConnection.tsx similarity index 94% rename from webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Manual/CustomConnection.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Manual/CustomConnection.tsx index f38e0f6168..c1a6ea6322 100644 --- a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Manual/CustomConnection.tsx +++ b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Manual/CustomConnection.tsx @@ -11,9 +11,9 @@ import { observer } from 'mobx-react-lite'; import { useMemo } from 'react'; import { Loader } from '@cloudbeaver/core-blocks'; +import { DBDriverResource } from '@cloudbeaver/core-connections'; import { useService } from '@cloudbeaver/core-di'; -import { DBDriverResource } from '../../../../DBDriverResource'; import { ConnectionManualService } from './ConnectionManualService'; import { DriverList } from './DriverList'; diff --git a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Manual/Driver.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Manual/Driver.tsx similarity index 94% rename from webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Manual/Driver.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Manual/Driver.tsx index 5404f4213b..5bd4fc1ee3 100644 --- a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Manual/Driver.tsx +++ b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Manual/Driver.tsx @@ -13,8 +13,7 @@ import styled, { css } from 'reshadow'; import { ListItem, ListItemIcon, StaticImage, ListItemName, ListItemDescription } from '@cloudbeaver/core-blocks'; - -import type { DBDriver } from '../../../../DBDriverResource'; +import type { DBDriver } from '@cloudbeaver/core-connections'; const styles = css` StaticImage { diff --git a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Manual/DriverList.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Manual/DriverList.tsx similarity index 95% rename from webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Manual/DriverList.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Manual/DriverList.tsx index b0ebcb9225..34a6059533 100644 --- a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Manual/DriverList.tsx +++ b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Manual/DriverList.tsx @@ -10,9 +10,9 @@ import { observer } from 'mobx-react-lite'; import { useState, useMemo } from 'react'; import { ItemListSearch, ItemList } from '@cloudbeaver/core-blocks'; +import type { DBDriver } from '@cloudbeaver/core-connections'; import { useTranslate } from '@cloudbeaver/core-localization'; -import type { DBDriver } from '../../../../DBDriverResource'; import { Driver } from './Driver'; interface Props { diff --git a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Search/ConnectionSearchService.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Search/ConnectionSearchService.tsx similarity index 100% rename from webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Search/ConnectionSearchService.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Search/ConnectionSearchService.tsx diff --git a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Search/Database.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Search/Database.tsx similarity index 97% rename from webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Search/Database.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Search/Database.tsx index fc135c49ce..7aed76e51b 100644 --- a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Search/Database.tsx +++ b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Search/Database.tsx @@ -13,12 +13,11 @@ import styled, { css } from 'reshadow'; import { ListItem, ListItemIcon, StaticImage, ListItemName } from '@cloudbeaver/core-blocks'; +import { DBDriverResource } from '@cloudbeaver/core-connections'; import { useService } from '@cloudbeaver/core-di'; import type { AdminConnectionSearchInfo } from '@cloudbeaver/core-sdk'; import { composes, useStyles } from '@cloudbeaver/core-theming'; -import { DBDriverResource } from '../../../../DBDriverResource'; - const styles = composes( css` StaticImage { diff --git a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Search/DatabaseList.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Search/DatabaseList.tsx similarity index 100% rename from webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Search/DatabaseList.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Search/DatabaseList.tsx diff --git a/webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Search/SearchDatabase.tsx b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Search/SearchDatabase.tsx similarity index 100% rename from webapp/packages/core-connections/src/Administration/Connections/CreateConnection/Search/SearchDatabase.tsx rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnection/Search/SearchDatabase.tsx diff --git a/webapp/packages/core-connections/src/Administration/Connections/CreateConnectionService.ts b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnectionService.ts similarity index 93% rename from webapp/packages/core-connections/src/Administration/Connections/CreateConnectionService.ts rename to webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnectionService.ts index 7cf2e5844a..8d2cdc5320 100644 --- a/webapp/packages/core-connections/src/Administration/Connections/CreateConnectionService.ts +++ b/webapp/packages/plugin-connections-administration/src/Administration/Connections/CreateConnectionService.ts @@ -12,10 +12,8 @@ import { AdministrationScreenService } from '@cloudbeaver/core-administration'; import { TabsContainer } from '@cloudbeaver/core-blocks'; import { injectable } from '@cloudbeaver/core-di'; import type { ConnectionConfig } from '@cloudbeaver/core-sdk'; +import { ConnectionFormService, ConnectionFormState, IConnectionFormState } from '@cloudbeaver/plugin-connections'; -import { ConnectionFormService } from '../../ConnectionForm/ConnectionFormService'; -import { ConnectionFormState } from '../../ConnectionForm/ConnectionFormState'; -import type { IConnectionFormState } from '../../ConnectionForm/IConnectionFormProps'; import { ConnectionsResource } from '../ConnectionsResource'; import { ConnectionsAdministrationNavService } from './ConnectionsAdministrationNavService'; diff --git a/webapp/packages/core-connections/src/Administration/ConnectionsResource.ts b/webapp/packages/plugin-connections-administration/src/Administration/ConnectionsResource.ts similarity index 91% rename from webapp/packages/core-connections/src/Administration/ConnectionsResource.ts rename to webapp/packages/plugin-connections-administration/src/Administration/ConnectionsResource.ts index da9d15d159..739d42eb62 100644 --- a/webapp/packages/core-connections/src/Administration/ConnectionsResource.ts +++ b/webapp/packages/plugin-connections-administration/src/Administration/ConnectionsResource.ts @@ -10,9 +10,8 @@ import { action, makeObservable } from 'mobx'; import { Observable, Subject } from 'rxjs'; import { EAdminPermission } from '@cloudbeaver/core-administration'; -import { AUTH_PROVIDER_LOCAL_ID } from '@cloudbeaver/core-authentication'; +import type { DatabaseConnection, IConnectionsResource } from '@cloudbeaver/core-connections'; import { injectable } from '@cloudbeaver/core-di'; -import { ExecutorInterrupter } from '@cloudbeaver/core-executor'; import { PermissionsResource, SessionDataResource } from '@cloudbeaver/core-root'; import { GraphQLService, @@ -32,11 +31,11 @@ import { export const NEW_CONNECTION_SYMBOL = Symbol('new-connection'); -export type DatabaseConnection = DatabaseConnectionFragment; export type NewConnection = DatabaseConnectionFragment & { [NEW_CONNECTION_SYMBOL]: boolean; timestamp: number }; @injectable() -export class ConnectionsResource extends CachedMapResource { +export class ConnectionsResource extends CachedMapResource + implements IConnectionsResource { readonly onConnectionCreate: Observable; private changed: boolean; @@ -131,7 +130,13 @@ export class ConnectionsResource extends CachedMapResource { + async update(config: ConnectionConfig): Promise { + const id = config.connectionId; + + if (id === undefined) { + throw new Error('Connection id should be provided'); + } + await this.performUpdate(id, [], async () => { const { connection } = await this.graphQLService.sdk.updateConnectionConfiguration({ id, @@ -239,20 +244,6 @@ export class ConnectionsResource extends CachedMapResource { + this.localizationService.addProvider(this.provider.bind(this)); + } + + load(): void | Promise { } + + private async provider(locale: string) { + switch (locale) { + case 'ru': + return (await import('./locales/ru')).default; + case 'it': + return (await import('./locales/it')).default; + default: + return (await import('./locales/en')).default; + } + } +} diff --git a/webapp/packages/plugin-connections-administration/src/index.ts b/webapp/packages/plugin-connections-administration/src/index.ts new file mode 100644 index 0000000000..d2832ff9f0 --- /dev/null +++ b/webapp/packages/plugin-connections-administration/src/index.ts @@ -0,0 +1,12 @@ +import { connectionPlugin } from './manifest'; +export * from './Administration/Connections/ConnectionsAdministration'; +export * from './Administration/Connections/CreateConnection/Manual/ConnectionManualService'; +export * from './Administration/Connections/CreateConnection/Search/ConnectionSearchService'; +export * from './Administration/Connections/ConnectionsAdministrationNavService'; +export * from './Administration/Connections/ConnectionsAdministrationService'; +export * from './Administration/Connections/CreateConnection/CreateConnectionBaseBootstrap'; +export * from './Administration/Connections/CreateConnectionService'; +export * from './Administration/ConnectionsResource'; +export * from './ConnectionForm/ConnectionAccess/ConnectionAccessTabService'; + +export default connectionPlugin; diff --git a/webapp/packages/plugin-connections-administration/src/locales/en.ts b/webapp/packages/plugin-connections-administration/src/locales/en.ts new file mode 100644 index 0000000000..a34a6a922b --- /dev/null +++ b/webapp/packages/plugin-connections-administration/src/locales/en.ts @@ -0,0 +1,8 @@ +export default [ + ['connections_public_connection_edit_menu_item_title', 'Edit Connection'], + ['connections_public_connection_edit_cancel_title', 'Cancel confirmation'], + ['connections_public_connection_edit_cancel_message', 'You\'re going to cancel connection changes. Unsaved changes will be lost. Are you sure?'], + ['connections_public_connection_edit_reconnect_title', 'Connection updated'], + ['connections_public_connection_edit_reconnect_message', 'Connection has been updated. Do you want to reconnect?'], + ['connections_public_connection_edit_reconnect_failed', 'Failed to reconnect'], +]; diff --git a/webapp/packages/plugin-connections-administration/src/locales/it.ts b/webapp/packages/plugin-connections-administration/src/locales/it.ts new file mode 100644 index 0000000000..d8ab680a0f --- /dev/null +++ b/webapp/packages/plugin-connections-administration/src/locales/it.ts @@ -0,0 +1,5 @@ +export default [ + ['connections_public_connection_edit_menu_item_title', 'Modifica Connessione'], + ['connections_public_connection_edit_cancel_title', 'Conferma l\'annullamento'], + ['connections_public_connection_edit_cancel_message', 'Stai per annullare le modifiche alla connessione. Modifiche non salvate saranno perse. Sei sicuro?'], +]; diff --git a/webapp/packages/plugin-connections-administration/src/locales/ru.ts b/webapp/packages/plugin-connections-administration/src/locales/ru.ts new file mode 100644 index 0000000000..b114fe5796 --- /dev/null +++ b/webapp/packages/plugin-connections-administration/src/locales/ru.ts @@ -0,0 +1,8 @@ +export default [ + ['connections_public_connection_edit_menu_item_title', 'Изменить подключение'], + ['connections_public_connection_edit_cancel_title', 'Отмена редактирования'], + ['connections_public_connection_edit_cancel_message', 'Вы собираетесь закрыть редактор, несохраненные изменения не будут применены. Вы уверены?'], + ['connections_public_connection_edit_reconnect_title', 'Подключение обновлено'], + ['connections_public_connection_edit_reconnect_message', 'Подключение было обновлено. Вы хотите переподключиться?'], + ['connections_public_connection_edit_reconnect_failed', 'Не удалось переподключиться'], +]; diff --git a/webapp/packages/plugin-connections-administration/src/manifest.ts b/webapp/packages/plugin-connections-administration/src/manifest.ts new file mode 100644 index 0000000000..c9f6f94d14 --- /dev/null +++ b/webapp/packages/plugin-connections-administration/src/manifest.ts @@ -0,0 +1,37 @@ +/* + * CloudBeaver - Cloud Database Manager + * Copyright (C) 2020-2021 DBeaver Corp and others + * + * Licensed under the Apache License, Version 2.0. + * you may not use this file except in compliance with the License. + */ + +import type { PluginManifest } from '@cloudbeaver/core-di'; + +import { ConnectionsAdministrationNavService } from './Administration/Connections/ConnectionsAdministrationNavService'; +import { ConnectionsAdministrationService } from './Administration/Connections/ConnectionsAdministrationService'; +import { CreateConnectionBaseBootstrap } from './Administration/Connections/CreateConnection/CreateConnectionBaseBootstrap'; +import { ConnectionManualService } from './Administration/Connections/CreateConnection/Manual/ConnectionManualService'; +import { ConnectionSearchService } from './Administration/Connections/CreateConnection/Search/ConnectionSearchService'; +import { CreateConnectionService } from './Administration/Connections/CreateConnectionService'; +import { ConnectionsResource } from './Administration/ConnectionsResource'; +import { ConnectionAccessTabService } from './ConnectionForm/ConnectionAccess/ConnectionAccessTabService'; +import { LocaleService } from './LocaleService'; + +export const connectionPlugin: PluginManifest = { + info: { + name: 'Connections Administration plugin', + }, + + providers: [ + LocaleService, + ConnectionsAdministrationService, + ConnectionsResource, + ConnectionsAdministrationNavService, + CreateConnectionService, + ConnectionManualService, + ConnectionSearchService, + CreateConnectionBaseBootstrap, + ConnectionAccessTabService, + ], +}; diff --git a/webapp/packages/plugin-connections-administration/tsconfig.json b/webapp/packages/plugin-connections-administration/tsconfig.json new file mode 100644 index 0000000000..8cd6b539e3 --- /dev/null +++ b/webapp/packages/plugin-connections-administration/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "lib" + }, + "include": ["src"], + "exclude": ["**/node_modules", "**/.*/"], +} diff --git a/webapp/packages/core-connections/src/ConnectionAuthService.ts b/webapp/packages/plugin-connections/src/ConnectionAuthService.ts similarity index 60% rename from webapp/packages/core-connections/src/ConnectionAuthService.ts rename to webapp/packages/plugin-connections/src/ConnectionAuthService.ts index 2b156f96bd..b3f7f2e4a7 100644 --- a/webapp/packages/core-connections/src/ConnectionAuthService.ts +++ b/webapp/packages/plugin-connections/src/ConnectionAuthService.ts @@ -7,10 +7,12 @@ */ import { AuthProviderService } from '@cloudbeaver/core-authentication'; +import { Connection, ConnectionInfoResource, ConnectionsManagerService } from '@cloudbeaver/core-connections'; import { injectable } from '@cloudbeaver/core-di'; import { CommonDialogService } from '@cloudbeaver/core-dialogs'; +import { NotificationService } from '@cloudbeaver/core-events'; +import type { IExecutionContextProvider } from '@cloudbeaver/core-executor'; -import { Connection, ConnectionInfoResource } from './ConnectionInfoResource'; import { DatabaseAuthDialog } from './DatabaseAuthDialog/DatabaseAuthDialog'; @injectable() @@ -18,8 +20,35 @@ export class ConnectionAuthService { constructor( private connectionInfoResource: ConnectionInfoResource, private commonDialogService: CommonDialogService, - private authProviderService: AuthProviderService - ) { } + private authProviderService: AuthProviderService, + private connectionsManagerService: ConnectionsManagerService, + private notificationService: NotificationService, + ) { + connectionsManagerService.connectionExecutor.addHandler(this.connectionDialog.bind(this)); + } + + private async connectionDialog(connectionId: string | null, context: IExecutionContextProvider) { + const connection = context.getContext(this.connectionsManagerService.connectionContext); + + if (!connectionId) { + if (!this.connectionsManagerService.hasAnyConnection()) { + return; + } + connectionId = this.connectionInfoResource.values[0].id; + } + + try { + const tempConnection = await this.auth(connectionId); + + if (!tempConnection?.connected) { + return; + } + connection.connection = tempConnection; + } catch (exception) { + this.notificationService.logException(exception); + throw exception; + } + } async auth(connectionId: string): Promise { if (!this.connectionInfoResource.has(connectionId)) { diff --git a/webapp/packages/core-connections/src/ConnectionAuthentication/ConnectionAuthenticationDialog.tsx b/webapp/packages/plugin-connections/src/ConnectionAuthentication/ConnectionAuthenticationDialog.tsx similarity index 97% rename from webapp/packages/core-connections/src/ConnectionAuthentication/ConnectionAuthenticationDialog.tsx rename to webapp/packages/plugin-connections/src/ConnectionAuthentication/ConnectionAuthenticationDialog.tsx index b5f912c56e..8482eb1bda 100644 --- a/webapp/packages/core-connections/src/ConnectionAuthentication/ConnectionAuthenticationDialog.tsx +++ b/webapp/packages/plugin-connections/src/ConnectionAuthentication/ConnectionAuthenticationDialog.tsx @@ -10,12 +10,12 @@ import { observer } from 'mobx-react-lite'; import styled, { css } from 'reshadow'; import { SubmittingForm, useFocus, Button } from '@cloudbeaver/core-blocks'; +import { useDBDriver } from '@cloudbeaver/core-connections'; import { CommonDialogWrapper, DialogComponent } from '@cloudbeaver/core-dialogs'; import { useTranslate } from '@cloudbeaver/core-localization'; import type { ConnectionConfig } from '@cloudbeaver/core-sdk'; import { useStyles } from '@cloudbeaver/core-theming'; -import { useDBDriver } from '../useDBDriver'; import { ConnectionAuthenticationForm } from './ConnectionAuthenticationForm'; const styles = css` diff --git a/webapp/packages/core-connections/src/ConnectionAuthentication/ConnectionAuthenticationForm.tsx b/webapp/packages/plugin-connections/src/ConnectionAuthentication/ConnectionAuthenticationForm.tsx similarity index 97% rename from webapp/packages/core-connections/src/ConnectionAuthentication/ConnectionAuthenticationForm.tsx rename to webapp/packages/plugin-connections/src/ConnectionAuthentication/ConnectionAuthenticationForm.tsx index 391fc2b634..7bced45edf 100644 --- a/webapp/packages/core-connections/src/ConnectionAuthentication/ConnectionAuthenticationForm.tsx +++ b/webapp/packages/plugin-connections/src/ConnectionAuthentication/ConnectionAuthenticationForm.tsx @@ -10,11 +10,11 @@ import { observer } from 'mobx-react-lite'; import styled from 'reshadow'; import { BASE_CONTAINERS_STYLES, Container, FieldCheckbox, Group, GroupTitle, ObjectPropertyInfoForm, TextPlaceholder, useMapResource } from '@cloudbeaver/core-blocks'; +import { DatabaseAuthModelsResource } from '@cloudbeaver/core-connections'; import { useTranslate } from '@cloudbeaver/core-localization'; import type { ObjectPropertyInfo } from '@cloudbeaver/core-sdk'; import { useStyles } from '@cloudbeaver/core-theming'; -import { DatabaseAuthModelsResource } from '../DatabaseAuthModelsResource'; import type { IConnectionAuthenticationConfig } from './IConnectionAuthenticationConfig'; import { NetworkHandlers } from './NetworkHandlers'; diff --git a/webapp/packages/core-connections/src/ConnectionAuthentication/IConnectionAuthenticationConfig.ts b/webapp/packages/plugin-connections/src/ConnectionAuthentication/IConnectionAuthenticationConfig.ts similarity index 100% rename from webapp/packages/core-connections/src/ConnectionAuthentication/IConnectionAuthenticationConfig.ts rename to webapp/packages/plugin-connections/src/ConnectionAuthentication/IConnectionAuthenticationConfig.ts diff --git a/webapp/packages/core-connections/src/ConnectionAuthentication/NetworkHandlerAuthForm.tsx b/webapp/packages/plugin-connections/src/ConnectionAuthentication/NetworkHandlerAuthForm.tsx similarity index 97% rename from webapp/packages/core-connections/src/ConnectionAuthentication/NetworkHandlerAuthForm.tsx rename to webapp/packages/plugin-connections/src/ConnectionAuthentication/NetworkHandlerAuthForm.tsx index fb6b483e05..b268b7492f 100644 --- a/webapp/packages/core-connections/src/ConnectionAuthentication/NetworkHandlerAuthForm.tsx +++ b/webapp/packages/plugin-connections/src/ConnectionAuthentication/NetworkHandlerAuthForm.tsx @@ -10,12 +10,11 @@ import { observer } from 'mobx-react-lite'; import styled from 'reshadow'; import { BASE_CONTAINERS_STYLES, FieldCheckbox, GroupTitle, InputField, useMapResource } from '@cloudbeaver/core-blocks'; +import { NetworkHandlerResource } from '@cloudbeaver/core-connections'; import { useTranslate } from '@cloudbeaver/core-localization'; import type { NetworkHandlerConfigInput } from '@cloudbeaver/core-sdk'; import { useStyles } from '@cloudbeaver/core-theming'; -import { NetworkHandlerResource } from '../NetworkHandlerResource'; - interface Props { id: string; networkHandlersConfig: NetworkHandlerConfigInput[]; diff --git a/webapp/packages/core-connections/src/ConnectionAuthentication/NetworkHandlers.tsx b/webapp/packages/plugin-connections/src/ConnectionAuthentication/NetworkHandlers.tsx similarity index 100% rename from webapp/packages/core-connections/src/ConnectionAuthentication/NetworkHandlers.tsx rename to webapp/packages/plugin-connections/src/ConnectionAuthentication/NetworkHandlers.tsx diff --git a/webapp/packages/core-connections/src/ConnectionForm/ConnectionForm.tsx b/webapp/packages/plugin-connections/src/ConnectionForm/ConnectionForm.tsx similarity index 100% rename from webapp/packages/core-connections/src/ConnectionForm/ConnectionForm.tsx rename to webapp/packages/plugin-connections/src/ConnectionForm/ConnectionForm.tsx diff --git a/webapp/packages/core-connections/src/ConnectionForm/ConnectionFormBaseActions.tsx b/webapp/packages/plugin-connections/src/ConnectionForm/ConnectionFormBaseActions.tsx similarity index 100% rename from webapp/packages/core-connections/src/ConnectionForm/ConnectionFormBaseActions.tsx rename to webapp/packages/plugin-connections/src/ConnectionForm/ConnectionFormBaseActions.tsx diff --git a/webapp/packages/core-connections/src/ConnectionForm/ConnectionFormService.ts b/webapp/packages/plugin-connections/src/ConnectionForm/ConnectionFormService.ts similarity index 100% rename from webapp/packages/core-connections/src/ConnectionForm/ConnectionFormService.ts rename to webapp/packages/plugin-connections/src/ConnectionForm/ConnectionFormService.ts diff --git a/webapp/packages/core-connections/src/ConnectionForm/ConnectionFormState.ts b/webapp/packages/plugin-connections/src/ConnectionForm/ConnectionFormState.ts similarity index 93% rename from webapp/packages/core-connections/src/ConnectionForm/ConnectionFormState.ts rename to webapp/packages/plugin-connections/src/ConnectionForm/ConnectionFormState.ts index 9844852cce..ae8c9cc445 100644 --- a/webapp/packages/core-connections/src/ConnectionForm/ConnectionFormState.ts +++ b/webapp/packages/plugin-connections/src/ConnectionForm/ConnectionFormState.ts @@ -9,12 +9,11 @@ import { computed, makeObservable, observable } from 'mobx'; import type { IFormStateInfo } from '@cloudbeaver/core-blocks'; +import { DatabaseConnection, EConnectionFeature, IConnectionsResource } from '@cloudbeaver/core-connections'; import { Executor, IExecutionContextProvider, IExecutor } from '@cloudbeaver/core-executor'; -import { CachedMapResource, ConnectionConfig, GetConnectionsQueryVariables, ResourceKey, ResourceKeyUtils } from '@cloudbeaver/core-sdk'; +import { ConnectionConfig, ResourceKey, ResourceKeyUtils } from '@cloudbeaver/core-sdk'; import { MetadataMap } from '@cloudbeaver/core-utils'; -import type { DatabaseConnection } from '../Administration/ConnectionsResource'; -import { EConnectionFeature } from '../EConnectionFeature'; import { connectionFormConfigureContext } from './connectionFormConfigureContext'; import type { ConnectionFormService } from './ConnectionFormService'; import { connectionFormStateContext } from './Contexts/connectionFormStateContext'; @@ -71,7 +70,7 @@ export class ConnectionFormState implements IConnectionFormState { return false; } - readonly resource: CachedMapResource; + readonly resource: IConnectionsResource; readonly service: ConnectionFormService; readonly submittingTask: IExecutor; @@ -82,7 +81,7 @@ export class ConnectionFormState implements IConnectionFormState { constructor( service: ConnectionFormService, - resource: CachedMapResource + resource: IConnectionsResource ) { makeObservable(this, { mode: observable, diff --git a/webapp/packages/core-connections/src/ConnectionForm/Contexts/connectionConfigContext.ts b/webapp/packages/plugin-connections/src/ConnectionForm/Contexts/connectionConfigContext.ts similarity index 100% rename from webapp/packages/core-connections/src/ConnectionForm/Contexts/connectionConfigContext.ts rename to webapp/packages/plugin-connections/src/ConnectionForm/Contexts/connectionConfigContext.ts diff --git a/webapp/packages/core-connections/src/ConnectionForm/Contexts/connectionCredentialsStateContext.ts b/webapp/packages/plugin-connections/src/ConnectionForm/Contexts/connectionCredentialsStateContext.ts similarity index 100% rename from webapp/packages/core-connections/src/ConnectionForm/Contexts/connectionCredentialsStateContext.ts rename to webapp/packages/plugin-connections/src/ConnectionForm/Contexts/connectionCredentialsStateContext.ts diff --git a/webapp/packages/core-connections/src/ConnectionForm/Contexts/connectionFormStateContext.ts b/webapp/packages/plugin-connections/src/ConnectionForm/Contexts/connectionFormStateContext.ts similarity index 100% rename from webapp/packages/core-connections/src/ConnectionForm/Contexts/connectionFormStateContext.ts rename to webapp/packages/plugin-connections/src/ConnectionForm/Contexts/connectionFormStateContext.ts diff --git a/webapp/packages/core-connections/src/ConnectionForm/DriverProperties/ConnectionDriverPropertiesTabService.ts b/webapp/packages/plugin-connections/src/ConnectionForm/DriverProperties/ConnectionDriverPropertiesTabService.ts similarity index 97% rename from webapp/packages/core-connections/src/ConnectionForm/DriverProperties/ConnectionDriverPropertiesTabService.ts rename to webapp/packages/plugin-connections/src/ConnectionForm/DriverProperties/ConnectionDriverPropertiesTabService.ts index b956885861..649bfac312 100644 --- a/webapp/packages/core-connections/src/ConnectionForm/DriverProperties/ConnectionDriverPropertiesTabService.ts +++ b/webapp/packages/plugin-connections/src/ConnectionForm/DriverProperties/ConnectionDriverPropertiesTabService.ts @@ -6,11 +6,11 @@ * you may not use this file except in compliance with the License. */ +import { DBDriverResource } from '@cloudbeaver/core-connections'; import { Bootstrap, injectable } from '@cloudbeaver/core-di'; import type { IExecutionContextProvider } from '@cloudbeaver/core-executor'; import { isObjectPropertyInfoStateEqual } from '@cloudbeaver/core-sdk'; -import { DBDriverResource } from '../../DBDriverResource'; import { ConnectionFormService } from '../ConnectionFormService'; import { connectionConfigContext } from '../Contexts/connectionConfigContext'; import { connectionFormStateContext } from '../Contexts/connectionFormStateContext'; diff --git a/webapp/packages/core-connections/src/ConnectionForm/DriverProperties/DriverProperties.tsx b/webapp/packages/plugin-connections/src/ConnectionForm/DriverProperties/DriverProperties.tsx similarity index 98% rename from webapp/packages/core-connections/src/ConnectionForm/DriverProperties/DriverProperties.tsx rename to webapp/packages/plugin-connections/src/ConnectionForm/DriverProperties/DriverProperties.tsx index 5f7955ce38..5982e237a2 100644 --- a/webapp/packages/core-connections/src/ConnectionForm/DriverProperties/DriverProperties.tsx +++ b/webapp/packages/plugin-connections/src/ConnectionForm/DriverProperties/DriverProperties.tsx @@ -12,10 +12,10 @@ import { useMemo, useState } from 'react'; import styled, { css } from 'reshadow'; import { BASE_CONTAINERS_STYLES, ColoredContainer, Group, IProperty, Loader, PropertiesTable, TabContainerPanelComponent, useMapResource, useTab } from '@cloudbeaver/core-blocks'; +import { DBDriverResource } from '@cloudbeaver/core-connections'; import { useStyles } from '@cloudbeaver/core-theming'; import { uuid } from '@cloudbeaver/core-utils'; -import { DBDriverResource } from '../../DBDriverResource'; import type { IConnectionFormProps } from '../IConnectionFormProps'; const styles = css` diff --git a/webapp/packages/core-connections/src/ConnectionForm/IConnectionFormProps.ts b/webapp/packages/plugin-connections/src/ConnectionForm/IConnectionFormProps.ts similarity index 86% rename from webapp/packages/core-connections/src/ConnectionForm/IConnectionFormProps.ts rename to webapp/packages/plugin-connections/src/ConnectionForm/IConnectionFormProps.ts index 47ab1257b2..e876a2df43 100644 --- a/webapp/packages/core-connections/src/ConnectionForm/IConnectionFormProps.ts +++ b/webapp/packages/plugin-connections/src/ConnectionForm/IConnectionFormProps.ts @@ -7,12 +7,11 @@ */ import type { IFormStateInfo } from '@cloudbeaver/core-blocks'; +import type { DatabaseConnection, IConnectionsResource } from '@cloudbeaver/core-connections'; import type { IExecutorHandlersCollection } from '@cloudbeaver/core-executor'; -import type { CachedMapResource, ConnectionConfig, GetConnectionsQueryVariables } from '@cloudbeaver/core-sdk'; +import type { ConnectionConfig } from '@cloudbeaver/core-sdk'; import type { MetadataMap } from '@cloudbeaver/core-utils'; -import type { DatabaseConnection } from '../Administration/ConnectionsResource'; - export type ConnectionFormMode = 'edit' | 'create'; export type ConnectionFormType = 'admin' | 'public'; @@ -30,7 +29,7 @@ export interface IConnectionFormState { readonly configured: boolean; readonly availableDrivers: string[]; - readonly resource: CachedMapResource; + readonly resource: IConnectionsResource; readonly info: DatabaseConnection | undefined; readonly readonly: boolean; readonly submittingTask: IExecutorHandlersCollection; diff --git a/webapp/packages/core-connections/src/ConnectionForm/Options/ConnectionOptionsTabService.ts b/webapp/packages/plugin-connections/src/ConnectionForm/Options/ConnectionOptionsTabService.ts similarity index 77% rename from webapp/packages/core-connections/src/ConnectionForm/Options/ConnectionOptionsTabService.ts rename to webapp/packages/plugin-connections/src/ConnectionForm/Options/ConnectionOptionsTabService.ts index e6f6cb3a98..41add99925 100644 --- a/webapp/packages/core-connections/src/ConnectionForm/Options/ConnectionOptionsTabService.ts +++ b/webapp/packages/plugin-connections/src/ConnectionForm/Options/ConnectionOptionsTabService.ts @@ -6,16 +6,12 @@ * you may not use this file except in compliance with the License. */ +import { DatabaseAuthModelsResource, DatabaseConnection, DBDriverResource, isJDBCConnection } from '@cloudbeaver/core-connections'; import { Bootstrap, injectable } from '@cloudbeaver/core-di'; import type { IExecutionContextProvider } from '@cloudbeaver/core-executor'; -import { isObjectPropertyInfoStateEqual, ObjectPropertyInfo } from '@cloudbeaver/core-sdk'; +import { CachedMapAllKey, isObjectPropertyInfoStateEqual, ObjectPropertyInfo } from '@cloudbeaver/core-sdk'; import { getUniqueName, isValuesEqual } from '@cloudbeaver/core-utils'; -import { ConnectionsResource, DatabaseConnection } from '../../Administration/ConnectionsResource'; -import { ConnectionInfoResource } from '../../ConnectionInfoResource'; -import { DatabaseAuthModelsResource } from '../../DatabaseAuthModelsResource'; -import { DBDriverResource } from '../../DBDriverResource'; -import { isJDBCConnection } from '../../isJDBCConnection'; import { connectionFormConfigureContext } from '../connectionFormConfigureContext'; import { ConnectionFormService } from '../ConnectionFormService'; import { connectionConfigContext } from '../Contexts/connectionConfigContext'; @@ -30,8 +26,6 @@ export class ConnectionOptionsTabService extends Bootstrap { private readonly connectionFormService: ConnectionFormService, private readonly dbDriverResource: DBDriverResource, private readonly databaseAuthModelsResource: DatabaseAuthModelsResource, - private readonly connectionsResource: ConnectionsResource, - private readonly connectionInfoResource: ConnectionInfoResource, ) { super(); } @@ -76,44 +70,23 @@ export class ConnectionOptionsTabService extends Bootstrap { const config = contexts.getContext(connectionConfigContext); try { - if (state.type === 'admin') { - if (submitType === 'submit') { - if (state.mode === 'edit') { - const connection = await this.connectionsResource.update(config.connectionId!, config); - status.info('Connection updated'); - status.info(connection.name); - } else { - const connection = await this.connectionsResource.create(config); - config.connectionId = connection.id; - status.info('Connection created'); - status.info(connection.name); - } + if (submitType === 'submit') { + if (state.mode === 'edit') { + const connection = await state.resource.update(config); + status.info('Connection was updated'); + status.info(connection.name); } else { - const info = await this.connectionsResource.test(config); - status.info('Connection is established'); - status.info('Client version: ' + info.clientVersion); - status.info('Server version: ' + info.serverVersion); - status.info('Connection time: ' + info.connectTime); + const connection = await state.resource.create(config); + config.connectionId = connection.id; + status.info('Connection was created'); + status.info(connection.name); } } else { - if (submitType === 'submit') { - if (state.mode === 'edit') { - const connection = await this.connectionInfoResource.update(config); - status.info('Connection was updated'); - status.info(connection.name); - } else { - const connection = await this.connectionInfoResource.createConnection(config); - config.connectionId = connection.id; - status.info('Connection was created'); - status.info(connection.name); - } - } else { - const info = await this.connectionInfoResource.testConnection(config); - status.info('Connection is established'); - status.info('Client version: ' + info.clientVersion); - status.info('Server version: ' + info.serverVersion); - status.info('Connection time: ' + info.connectTime); - } + const info = await state.resource.test(config); + status.info('Connection is established'); + status.info('Client version: ' + info.clientVersion); + status.info('Server version: ' + info.serverVersion); + status.info('Connection time: ' + info.connectTime); } } catch (exception) { if (submitType === 'submit') { @@ -214,14 +187,9 @@ export class ConnectionOptionsTabService extends Bootstrap { config.name = state.config.name?.trim(); if (config.name && state.mode === 'create') { - if (state.type === 'admin') { - await this.connectionsResource.loadAll(); - const connectionNames = this.connectionsResource.values.map(connection => connection.name); - config.name = getUniqueName(config.name, connectionNames); - } else { - const connectionNames = this.connectionInfoResource.values.map(connection => connection.name); - config.name = getUniqueName(config.name, connectionNames); - } + const connections = await state.resource.load(CachedMapAllKey); + const connectionNames = connections.map(connection => connection.name); + config.name = getUniqueName(config.name, connectionNames); } config.description = state.config.description; diff --git a/webapp/packages/core-connections/src/ConnectionForm/Options/Options.tsx b/webapp/packages/plugin-connections/src/ConnectionForm/Options/Options.tsx similarity index 96% rename from webapp/packages/core-connections/src/ConnectionForm/Options/Options.tsx rename to webapp/packages/plugin-connections/src/ConnectionForm/Options/Options.tsx index c387446ac6..a8854f796d 100644 --- a/webapp/packages/core-connections/src/ConnectionForm/Options/Options.tsx +++ b/webapp/packages/plugin-connections/src/ConnectionForm/Options/Options.tsx @@ -28,15 +28,12 @@ import { Container, useFormValidator, } from '@cloudbeaver/core-blocks'; +import { DatabaseAuthModelsResource, DBDriverResource, isJDBCConnection, isLocalConnection } from '@cloudbeaver/core-connections'; import { useService } from '@cloudbeaver/core-di'; import { useTranslate } from '@cloudbeaver/core-localization'; import { useStyles } from '@cloudbeaver/core-theming'; import { useAuthenticationAction } from '@cloudbeaver/core-ui'; -import { isLocalConnection } from '../../Administration/ConnectionsResource'; -import { DatabaseAuthModelsResource } from '../../DatabaseAuthModelsResource'; -import { DBDriverResource } from '../../DBDriverResource'; -import { isJDBCConnection } from '../../isJDBCConnection'; import { ConnectionFormService } from '../ConnectionFormService'; import type { IConnectionFormProps } from '../IConnectionFormProps'; import { ParametersForm } from './ParametersForm'; diff --git a/webapp/packages/core-connections/src/ConnectionForm/Options/ParametersForm.tsx b/webapp/packages/plugin-connections/src/ConnectionForm/Options/ParametersForm.tsx similarity index 100% rename from webapp/packages/core-connections/src/ConnectionForm/Options/ParametersForm.tsx rename to webapp/packages/plugin-connections/src/ConnectionForm/Options/ParametersForm.tsx diff --git a/webapp/packages/core-connections/src/ConnectionForm/Options/useOptions.ts b/webapp/packages/plugin-connections/src/ConnectionForm/Options/useOptions.ts similarity index 96% rename from webapp/packages/core-connections/src/ConnectionForm/Options/useOptions.ts rename to webapp/packages/plugin-connections/src/ConnectionForm/Options/useOptions.ts index 0199605bc6..581a986b2b 100644 --- a/webapp/packages/core-connections/src/ConnectionForm/Options/useOptions.ts +++ b/webapp/packages/plugin-connections/src/ConnectionForm/Options/useOptions.ts @@ -7,10 +7,9 @@ */ import { useObjectRef } from '@cloudbeaver/core-blocks'; +import { DBDriver, isJDBCConnection } from '@cloudbeaver/core-connections'; import type { DatabaseAuthModel } from '@cloudbeaver/core-sdk'; -import type { DBDriver } from '../../DBDriverResource'; -import { isJDBCConnection } from '../../isJDBCConnection'; import type { IConnectionFormState } from '../IConnectionFormProps'; const MAX_HOST_LENGTH = 20; diff --git a/webapp/packages/core-connections/src/ConnectionForm/OriginInfo/ConnectionFormAuthenticationAction.tsx b/webapp/packages/plugin-connections/src/ConnectionForm/OriginInfo/ConnectionFormAuthenticationAction.tsx similarity index 95% rename from webapp/packages/core-connections/src/ConnectionForm/OriginInfo/ConnectionFormAuthenticationAction.tsx rename to webapp/packages/plugin-connections/src/ConnectionForm/OriginInfo/ConnectionFormAuthenticationAction.tsx index cd95b4188c..28b29d9759 100644 --- a/webapp/packages/core-connections/src/ConnectionForm/OriginInfo/ConnectionFormAuthenticationAction.tsx +++ b/webapp/packages/plugin-connections/src/ConnectionForm/OriginInfo/ConnectionFormAuthenticationAction.tsx @@ -10,10 +10,10 @@ import { observer } from 'mobx-react-lite'; import { AUTH_PROVIDER_LOCAL_ID } from '@cloudbeaver/core-authentication'; import { Button, PlaceholderComponent } from '@cloudbeaver/core-blocks'; +import { isLocalConnection } from '@cloudbeaver/core-connections'; import { useTranslate } from '@cloudbeaver/core-localization'; import { useAuthenticationAction } from '@cloudbeaver/core-ui'; -import { isLocalConnection } from '../../Administration/ConnectionsResource'; import type { IConnectionFormProps } from '../IConnectionFormProps'; export const AuthenticationButton: PlaceholderComponent = observer(function ConnectionFormAuthenticationAction({ diff --git a/webapp/packages/core-connections/src/ConnectionForm/OriginInfo/ConnectionOriginInfoTabService.ts b/webapp/packages/plugin-connections/src/ConnectionForm/OriginInfo/ConnectionOriginInfoTabService.ts similarity index 97% rename from webapp/packages/core-connections/src/ConnectionForm/OriginInfo/ConnectionOriginInfoTabService.ts rename to webapp/packages/plugin-connections/src/ConnectionForm/OriginInfo/ConnectionOriginInfoTabService.ts index 8ced417ce0..0e854359cd 100644 --- a/webapp/packages/core-connections/src/ConnectionForm/OriginInfo/ConnectionOriginInfoTabService.ts +++ b/webapp/packages/plugin-connections/src/ConnectionForm/OriginInfo/ConnectionOriginInfoTabService.ts @@ -7,10 +7,10 @@ */ import { AUTH_PROVIDER_LOCAL_ID, UserInfoResource } from '@cloudbeaver/core-authentication'; +import { isLocalConnection } from '@cloudbeaver/core-connections'; import { Bootstrap, injectable } from '@cloudbeaver/core-di'; import type { IExecutionContextProvider } from '@cloudbeaver/core-executor'; -import { isLocalConnection } from '../../Administration/ConnectionsResource'; import { connectionFormConfigureContext } from '../connectionFormConfigureContext'; import { ConnectionFormService } from '../ConnectionFormService'; import { connectionFormStateContext } from '../Contexts/connectionFormStateContext'; diff --git a/webapp/packages/core-connections/src/ConnectionForm/OriginInfo/OriginInfo.tsx b/webapp/packages/plugin-connections/src/ConnectionForm/OriginInfo/OriginInfo.tsx similarity index 100% rename from webapp/packages/core-connections/src/ConnectionForm/OriginInfo/OriginInfo.tsx rename to webapp/packages/plugin-connections/src/ConnectionForm/OriginInfo/OriginInfo.tsx diff --git a/webapp/packages/core-connections/src/ConnectionForm/OriginInfo/OriginInfoTab.tsx b/webapp/packages/plugin-connections/src/ConnectionForm/OriginInfo/OriginInfoTab.tsx similarity index 100% rename from webapp/packages/core-connections/src/ConnectionForm/OriginInfo/OriginInfoTab.tsx rename to webapp/packages/plugin-connections/src/ConnectionForm/OriginInfo/OriginInfoTab.tsx diff --git a/webapp/packages/core-connections/src/ConnectionForm/SSH/ConnectionSSHTabService.ts b/webapp/packages/plugin-connections/src/ConnectionForm/SSH/ConnectionSSHTabService.ts similarity index 96% rename from webapp/packages/core-connections/src/ConnectionForm/SSH/ConnectionSSHTabService.ts rename to webapp/packages/plugin-connections/src/ConnectionForm/SSH/ConnectionSSHTabService.ts index 732bf71b96..000327c0e1 100644 --- a/webapp/packages/core-connections/src/ConnectionForm/SSH/ConnectionSSHTabService.ts +++ b/webapp/packages/plugin-connections/src/ConnectionForm/SSH/ConnectionSSHTabService.ts @@ -6,13 +6,11 @@ * you may not use this file except in compliance with the License. */ +import { DatabaseConnection, DBDriverResource, SSH_TUNNEL_ID } from '@cloudbeaver/core-connections'; import { Bootstrap, injectable } from '@cloudbeaver/core-di'; import type { IExecutionContextProvider } from '@cloudbeaver/core-executor'; import type { NetworkHandlerConfigInput } from '@cloudbeaver/core-sdk'; -import type { DatabaseConnection } from '../../Administration/ConnectionsResource'; -import { DBDriverResource } from '../../DBDriverResource'; -import { SSH_TUNNEL_ID } from '../../NetworkHandlerResource'; import { connectionFormConfigureContext } from '../connectionFormConfigureContext'; import { ConnectionFormService } from '../ConnectionFormService'; import { connectionConfigContext } from '../Contexts/connectionConfigContext'; diff --git a/webapp/packages/core-connections/src/ConnectionForm/SSH/SSH.tsx b/webapp/packages/plugin-connections/src/ConnectionForm/SSH/SSH.tsx similarity index 98% rename from webapp/packages/core-connections/src/ConnectionForm/SSH/SSH.tsx rename to webapp/packages/plugin-connections/src/ConnectionForm/SSH/SSH.tsx index 7c0eaec784..5ae1241cfa 100644 --- a/webapp/packages/core-connections/src/ConnectionForm/SSH/SSH.tsx +++ b/webapp/packages/plugin-connections/src/ConnectionForm/SSH/SSH.tsx @@ -14,10 +14,10 @@ import { css } from 'reshadow'; import { useAdministrationSettings } from '@cloudbeaver/core-administration'; import { Group, SubmittingForm, useMapResource, Button, ColoredContainer, InputField, FieldCheckbox, BASE_CONTAINERS_STYLES, Switch, GroupItem, Container } from '@cloudbeaver/core-blocks'; import type { TabContainerPanelComponent } from '@cloudbeaver/core-blocks'; +import { NetworkHandlerResource, SSH_TUNNEL_ID } from '@cloudbeaver/core-connections'; import { useTranslate } from '@cloudbeaver/core-localization'; import { useStyles } from '@cloudbeaver/core-theming'; -import { NetworkHandlerResource, SSH_TUNNEL_ID } from '../../NetworkHandlerResource'; import type { IConnectionFormProps } from '../IConnectionFormProps'; const SSH_STYLES = css` diff --git a/webapp/packages/core-connections/src/ConnectionForm/SSH/SSHTab.tsx b/webapp/packages/plugin-connections/src/ConnectionForm/SSH/SSHTab.tsx similarity index 92% rename from webapp/packages/core-connections/src/ConnectionForm/SSH/SSHTab.tsx rename to webapp/packages/plugin-connections/src/ConnectionForm/SSH/SSHTab.tsx index 06d28d662d..8366b8f37e 100644 --- a/webapp/packages/core-connections/src/ConnectionForm/SSH/SSHTab.tsx +++ b/webapp/packages/plugin-connections/src/ConnectionForm/SSH/SSHTab.tsx @@ -10,10 +10,10 @@ import { observer } from 'mobx-react-lite'; import styled from 'reshadow'; import { TabTitle, Tab, TabContainerTabComponent, useMapResource } from '@cloudbeaver/core-blocks'; +import { NetworkHandlerResource, SSH_TUNNEL_ID } from '@cloudbeaver/core-connections'; import { Translate } from '@cloudbeaver/core-localization'; import { useStyles } from '@cloudbeaver/core-theming'; -import { NetworkHandlerResource, SSH_TUNNEL_ID } from '../../NetworkHandlerResource'; import type { IConnectionFormProps } from '../IConnectionFormProps'; export const SSHTab: TabContainerTabComponent = observer(function SSHTab({ diff --git a/webapp/packages/core-connections/src/ConnectionForm/connectionFormConfigureContext.ts b/webapp/packages/plugin-connections/src/ConnectionForm/connectionFormConfigureContext.ts similarity index 94% rename from webapp/packages/core-connections/src/ConnectionForm/connectionFormConfigureContext.ts rename to webapp/packages/plugin-connections/src/ConnectionForm/connectionFormConfigureContext.ts index 24489b6309..cd3f271f12 100644 --- a/webapp/packages/core-connections/src/ConnectionForm/connectionFormConfigureContext.ts +++ b/webapp/packages/plugin-connections/src/ConnectionForm/connectionFormConfigureContext.ts @@ -6,10 +6,10 @@ * you may not use this file except in compliance with the License. */ +import type { DatabaseConnection } from '@cloudbeaver/core-connections'; import type { IExecutionContextProvider } from '@cloudbeaver/core-executor'; import type { CachedResourceIncludeArgs, GetConnectionsQueryVariables } from '@cloudbeaver/core-sdk'; -import type { DatabaseConnection } from '../Administration/ConnectionsResource'; import type { IConnectionFormState } from './IConnectionFormProps'; export type ConnectionFormInfoIncludes = CachedResourceIncludeArgs; diff --git a/webapp/packages/core-connections/src/ConnectionForm/useConnectionFormState.ts b/webapp/packages/plugin-connections/src/ConnectionForm/useConnectionFormState.ts similarity index 78% rename from webapp/packages/core-connections/src/ConnectionForm/useConnectionFormState.ts rename to webapp/packages/plugin-connections/src/ConnectionForm/useConnectionFormState.ts index 2f2a89f5d5..93dbc6185b 100644 --- a/webapp/packages/core-connections/src/ConnectionForm/useConnectionFormState.ts +++ b/webapp/packages/plugin-connections/src/ConnectionForm/useConnectionFormState.ts @@ -8,16 +8,15 @@ import { useEffect, useState } from 'react'; +import type { IConnectionsResource } from '@cloudbeaver/core-connections'; import { useService } from '@cloudbeaver/core-di'; -import type { CachedMapResource, GetConnectionsQueryVariables } from '@cloudbeaver/core-sdk'; -import type { DatabaseConnection } from '../Administration/ConnectionsResource'; import { ConnectionFormService } from './ConnectionFormService'; import { ConnectionFormState } from './ConnectionFormState'; import type { IConnectionFormState } from './IConnectionFormProps'; export function useConnectionFormState( - resource: CachedMapResource, + resource: IConnectionsResource, configure?: (state: IConnectionFormState) => any ): IConnectionFormState { const service = useService(ConnectionFormService); diff --git a/webapp/packages/core-connections/src/DatabaseAuthDialog/DBAuthDialogController.ts b/webapp/packages/plugin-connections/src/DatabaseAuthDialog/DBAuthDialogController.ts similarity index 96% rename from webapp/packages/core-connections/src/DatabaseAuthDialog/DBAuthDialogController.ts rename to webapp/packages/plugin-connections/src/DatabaseAuthDialog/DBAuthDialogController.ts index 19d938d392..99aca236e6 100644 --- a/webapp/packages/core-connections/src/DatabaseAuthDialog/DBAuthDialogController.ts +++ b/webapp/packages/plugin-connections/src/DatabaseAuthDialog/DBAuthDialogController.ts @@ -8,6 +8,7 @@ import { observable, makeObservable } from 'mobx'; +import type { ConnectionInfoResource, ConnectionInitConfig, DBDriverResource } from '@cloudbeaver/core-connections'; import { injectable, IInitializableController, IDestructibleController } from '@cloudbeaver/core-di'; import { CommonDialogService } from '@cloudbeaver/core-dialogs'; import { NotificationService } from '@cloudbeaver/core-events'; @@ -15,8 +16,6 @@ import { ErrorDetailsDialog } from '@cloudbeaver/core-notifications'; import { GQLErrorCatcher } from '@cloudbeaver/core-sdk'; import type { IConnectionAuthenticationConfig } from '../ConnectionAuthentication/IConnectionAuthenticationConfig'; -import { ConnectionInfoResource, ConnectionInitConfig } from '../ConnectionInfoResource'; -import { DBDriverResource } from '../DBDriverResource'; const USER_NAME_PROPERTY_ID = 'userName'; diff --git a/webapp/packages/core-connections/src/DatabaseAuthDialog/DBAuthDialogFooter.tsx b/webapp/packages/plugin-connections/src/DatabaseAuthDialog/DBAuthDialogFooter.tsx similarity index 100% rename from webapp/packages/core-connections/src/DatabaseAuthDialog/DBAuthDialogFooter.tsx rename to webapp/packages/plugin-connections/src/DatabaseAuthDialog/DBAuthDialogFooter.tsx diff --git a/webapp/packages/core-connections/src/DatabaseAuthDialog/DatabaseAuthDialog.tsx b/webapp/packages/plugin-connections/src/DatabaseAuthDialog/DatabaseAuthDialog.tsx similarity index 97% rename from webapp/packages/core-connections/src/DatabaseAuthDialog/DatabaseAuthDialog.tsx rename to webapp/packages/plugin-connections/src/DatabaseAuthDialog/DatabaseAuthDialog.tsx index c81813ab2e..e3a080b000 100644 --- a/webapp/packages/core-connections/src/DatabaseAuthDialog/DatabaseAuthDialog.tsx +++ b/webapp/packages/plugin-connections/src/DatabaseAuthDialog/DatabaseAuthDialog.tsx @@ -16,13 +16,12 @@ import { useFocus, ErrorMessage, } from '@cloudbeaver/core-blocks'; +import { useConnectionInfo, useDBDriver } from '@cloudbeaver/core-connections'; import { useController } from '@cloudbeaver/core-di'; import { CommonDialogWrapper, DialogComponent } from '@cloudbeaver/core-dialogs'; import { composes, useStyles } from '@cloudbeaver/core-theming'; import { ConnectionAuthenticationForm } from '../ConnectionAuthentication/ConnectionAuthenticationForm'; -import { useConnectionInfo } from '../useConnectionInfo'; -import { useDBDriver } from '../useDBDriver'; import { DBAuthDialogController } from './DBAuthDialogController'; import { DBAuthDialogFooter } from './DBAuthDialogFooter'; diff --git a/webapp/packages/plugin-connections/src/PublicConnectionForm/PublicConnectionForm.tsx b/webapp/packages/plugin-connections/src/PublicConnectionForm/PublicConnectionForm.tsx index 9259e48b99..1b666c8e7d 100644 --- a/webapp/packages/plugin-connections/src/PublicConnectionForm/PublicConnectionForm.tsx +++ b/webapp/packages/plugin-connections/src/PublicConnectionForm/PublicConnectionForm.tsx @@ -11,9 +11,9 @@ import { useCallback } from 'react'; import styled, { css } from 'reshadow'; import { Loader } from '@cloudbeaver/core-blocks'; -import { ConnectionForm } from '@cloudbeaver/core-connections'; import { useService } from '@cloudbeaver/core-di'; +import { ConnectionForm } from '../ConnectionForm/ConnectionForm'; import { PublicConnectionFormService } from './PublicConnectionFormService'; const styles = css` diff --git a/webapp/packages/plugin-connections/src/PublicConnectionForm/PublicConnectionFormService.ts b/webapp/packages/plugin-connections/src/PublicConnectionForm/PublicConnectionFormService.ts index 25efc1c8ab..40b85a0108 100644 --- a/webapp/packages/plugin-connections/src/PublicConnectionForm/PublicConnectionFormService.ts +++ b/webapp/packages/plugin-connections/src/PublicConnectionForm/PublicConnectionFormService.ts @@ -8,8 +8,7 @@ import { action, makeObservable, observable } from 'mobx'; -import { ConnectionAuthService, ConnectionFormService, ConnectionInfoResource, IConnectionFormState } from '@cloudbeaver/core-connections'; -import { ConnectionFormState } from '@cloudbeaver/core-connections'; +import { ConnectionInfoResource } from '@cloudbeaver/core-connections'; import { injectable } from '@cloudbeaver/core-di'; import { CommonDialogService, ConfirmationDialog, DialogueStateResult } from '@cloudbeaver/core-dialogs'; import { NotificationService } from '@cloudbeaver/core-events'; @@ -18,6 +17,10 @@ import { SessionDataResource } from '@cloudbeaver/core-root'; import { ConnectionConfig, ResourceKey, ResourceKeyUtils } from '@cloudbeaver/core-sdk'; import { OptionsPanelService } from '@cloudbeaver/core-ui'; +import { ConnectionAuthService } from '../ConnectionAuthService'; +import { ConnectionFormService } from '../ConnectionForm/ConnectionFormService'; +import { ConnectionFormState } from '../ConnectionForm/ConnectionFormState'; +import type { IConnectionFormState } from '../ConnectionForm/IConnectionFormProps'; import { PublicConnectionForm } from './PublicConnectionForm'; const formGetter = () => PublicConnectionForm; diff --git a/webapp/packages/plugin-connections/src/index.ts b/webapp/packages/plugin-connections/src/index.ts index c2892cd84f..0dbc64dcd4 100644 --- a/webapp/packages/plugin-connections/src/index.ts +++ b/webapp/packages/plugin-connections/src/index.ts @@ -1,6 +1,22 @@ import { connectionPlugin } from './manifest'; +export * from './ConnectionAuthentication/IConnectionAuthenticationConfig'; +export * from './ConnectionAuthentication/ConnectionAuthenticationForm'; +export * from './ConnectionForm/Options/ConnectionOptionsTabService'; +export * from './ConnectionForm/DriverProperties/ConnectionDriverPropertiesTabService'; +export * from './ConnectionForm/SSH/ConnectionSSHTabService'; +export * from './ConnectionForm/OriginInfo/ConnectionOriginInfoTabService'; +export * from './ConnectionForm/Contexts/connectionConfigContext'; +export * from './ConnectionForm/ConnectionFormBaseActions'; +export * from './ConnectionForm/connectionFormConfigureContext'; +export * from './ConnectionForm/ConnectionForm'; +export * from './ConnectionForm/ConnectionFormService'; +export * from './ConnectionForm/ConnectionFormState'; +export * from './ConnectionForm/Contexts/connectionFormStateContext'; +export * from './ConnectionForm/IConnectionFormProps'; +export * from './ConnectionForm/useConnectionFormState'; export * from './ContextMenu/DATA_CONTEXT_CONNECTION'; export * from './ContextMenu/MENU_CONNECTION_VIEW'; export * from './PublicConnectionForm/PublicConnectionFormService'; +export * from './ConnectionAuthService'; export default connectionPlugin; diff --git a/webapp/packages/plugin-connections/src/manifest.ts b/webapp/packages/plugin-connections/src/manifest.ts index 24a7a6d76f..914e9d2dd3 100644 --- a/webapp/packages/plugin-connections/src/manifest.ts +++ b/webapp/packages/plugin-connections/src/manifest.ts @@ -8,18 +8,30 @@ import type { PluginManifest } from '@cloudbeaver/core-di'; +import { ConnectionAuthService } from './ConnectionAuthService'; +import { ConnectionFormService } from './ConnectionForm/ConnectionFormService'; +import { ConnectionDriverPropertiesTabService } from './ConnectionForm/DriverProperties/ConnectionDriverPropertiesTabService'; +import { ConnectionOptionsTabService } from './ConnectionForm/Options/ConnectionOptionsTabService'; +import { ConnectionOriginInfoTabService } from './ConnectionForm/OriginInfo/ConnectionOriginInfoTabService'; +import { ConnectionSSHTabService } from './ConnectionForm/SSH/ConnectionSSHTabService'; import { ConnectionMenuBootstrap } from './ContextMenu/ConnectionMenuBootstrap'; import { LocaleService } from './LocaleService'; import { PublicConnectionFormService } from './PublicConnectionForm/PublicConnectionFormService'; export const connectionPlugin: PluginManifest = { info: { - name: 'Connection template plugin', + name: 'Connections plugin', }, providers: [ ConnectionMenuBootstrap, PublicConnectionFormService, LocaleService, + ConnectionAuthService, + ConnectionFormService, + ConnectionOptionsTabService, + ConnectionDriverPropertiesTabService, + ConnectionSSHTabService, + ConnectionOriginInfoTabService, ], }; diff --git a/webapp/packages/product-default/src/index.ts b/webapp/packages/product-default/src/index.ts index 08557b16ce..0f58b87022 100644 --- a/webapp/packages/product-default/src/index.ts +++ b/webapp/packages/product-default/src/index.ts @@ -4,9 +4,11 @@ import { bootstrap } from '@cloudbeaver/core-bootstrap'; import type { PluginManifest } from '@cloudbeaver/core-di'; import administration from '@cloudbeaver/plugin-administration'; import authentication from '@cloudbeaver/plugin-authentication'; +import authenticationAdministration from '@cloudbeaver/plugin-authentication-administration'; import connectionCustom from '@cloudbeaver/plugin-connection-custom'; import connectionTemplate from '@cloudbeaver/plugin-connection-template'; import connectionPlugin from '@cloudbeaver/plugin-connections'; +import connectionAdministration from '@cloudbeaver/plugin-connections-administration'; import dataExport from '@cloudbeaver/plugin-data-export'; import spreadsheetNew from '@cloudbeaver/plugin-data-spreadsheet-new'; import dataViewer from '@cloudbeaver/plugin-data-viewer'; @@ -23,6 +25,7 @@ const PLUGINS: PluginManifest[] = [ administration, spreadsheetNew, authentication, + authenticationAdministration, connectionCustom, connectionTemplate, dataExport, @@ -34,6 +37,7 @@ const PLUGINS: PluginManifest[] = [ userProfile, defaultProductManifest, connectionPlugin, + connectionAdministration, productPlugin, ]; From b53d46635591634a4a7990aae13c2d1f00f6949a Mon Sep 17 00:00:00 2001 From: Wroud Date: Tue, 9 Nov 2021 15:08:32 +0300 Subject: [PATCH 5/6] fix(plugin-user-profile): CB-1355 add cancel button for user profile --- .../src/UserProfileForm/UserForm.tsx | 16 ++++++++++++---- .../src/UserProfileForm/UserProfileForm.tsx | 4 +++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/webapp/packages/plugin-user-profile/src/UserProfileForm/UserForm.tsx b/webapp/packages/plugin-user-profile/src/UserProfileForm/UserForm.tsx index a861d3995b..ac92b1addd 100644 --- a/webapp/packages/plugin-user-profile/src/UserProfileForm/UserForm.tsx +++ b/webapp/packages/plugin-user-profile/src/UserProfileForm/UserForm.tsx @@ -9,13 +9,11 @@ import { observer } from 'mobx-react-lite'; import styled, { css } from 'reshadow'; -import { BASE_CONTAINERS_STYLES, IconOrImage, TabList, TabsState, UNDERLINE_TAB_STYLES } from '@cloudbeaver/core-blocks'; +import { BASE_CONTAINERS_STYLES, Button, IconOrImage, TabList, TabsState, UNDERLINE_TAB_STYLES } from '@cloudbeaver/core-blocks'; import { useTranslate } from '@cloudbeaver/core-localization'; import type { UserInfo } from '@cloudbeaver/core-sdk'; import { composes, useStyles } from '@cloudbeaver/core-theming'; -import { UserAuthProviderPanel } from './AuthProviders/UserAuthProvidersPanel'; -import { UserAuthProvidersTab } from './AuthProviders/UserAuthProvidersTab'; import type { IUserProfileFormState } from './IUserProfileFormState'; import { UserInfoPanel } from './UserInfo/UserInfoPanel'; import { UserInfoTab } from './UserInfo/UserInfoTab'; @@ -116,11 +114,13 @@ const formStyles = composes( interface Props { user: UserInfo; state: IUserProfileFormState; + onClose?: () => void; } export const UserForm = observer(function UserForm({ user, state, + onClose, }) { const translate = useTranslate(); const style = [tabsStyles, UNDERLINE_TAB_STYLES]; @@ -145,7 +145,15 @@ export const UserForm = observer(function UserForm({ - {' '} + {onClose && ( + + )} diff --git a/webapp/packages/plugin-user-profile/src/UserProfileForm/UserProfileForm.tsx b/webapp/packages/plugin-user-profile/src/UserProfileForm/UserProfileForm.tsx index 41f7ddda2e..8ee87272fa 100644 --- a/webapp/packages/plugin-user-profile/src/UserProfileForm/UserProfileForm.tsx +++ b/webapp/packages/plugin-user-profile/src/UserProfileForm/UserProfileForm.tsx @@ -7,6 +7,7 @@ */ import { observer } from 'mobx-react-lite'; +import { useCallback } from 'react'; import styled, { css } from 'reshadow'; import { UserInfoResource } from '@cloudbeaver/core-authentication'; @@ -28,6 +29,7 @@ export const UserProfileForm = observer(function UserProfileForm() { key: undefined as any, includes: ['includeMetaParameters'], }); + const close = useCallback(() => userProfileService.close(true), []); if (!userProfileService.formState) { return null; @@ -35,7 +37,7 @@ export const UserProfileForm = observer(function UserProfileForm() { return styled(style)( - {() => userInfo.data && } + {() => userInfo.data && } ); }); From 298a129af39b93f3ac1afa0a5fa42c7b12f4514e Mon Sep 17 00:00:00 2001 From: Wroud Date: Tue, 9 Nov 2021 15:53:28 +0300 Subject: [PATCH 6/6] fix(core-app): CB-1389 prevent simultaneous nodes update --- .../core-app/src/NavigationTree/useElementsTree.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/webapp/packages/core-app/src/NavigationTree/useElementsTree.ts b/webapp/packages/core-app/src/NavigationTree/useElementsTree.ts index 4a7a3fd9b3..47235e0270 100644 --- a/webapp/packages/core-app/src/NavigationTree/useElementsTree.ts +++ b/webapp/packages/core-app/src/NavigationTree/useElementsTree.ts @@ -97,18 +97,24 @@ export function useElementsTree(options: IOptions): IElementsTree { ); async function loadTree(nodeId: string) { - await connectionInfoResource.load(CachedMapAllKey); - let children = [nodeId]; while (children.length > 0) { const nextChildren: string[] = []; for (const child of children) { + await connectionInfoResource.load(CachedMapAllKey); + await navNodeInfoResource.waitLoad(); + await navTreeResource.waitLoad(); + const nodeState = state.get(child); if (!nodeState.expanded && child !== options.root) { if (navNodeInfoResource.isOutdated(child)) { - await navNodeInfoResource.load(child); + const node = navNodeInfoResource.get(child); + + if (node?.parentId !== undefined && !navTreeResource.isOutdated(node.parentId)) { + await navNodeInfoResource.load(child); + } } continue; }