mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
Merge remote-tracking branch 'origin/devel' into devel
This commit is contained in:
@@ -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<string> {
|
||||
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<string> {
|
||||
}
|
||||
|
||||
private async tryInitConnection(navNodeId: string): Promise<boolean> {
|
||||
const connection = await this.connectionAuthService.auth(
|
||||
const connection = await this.connectionsManagerService.requireConnection(
|
||||
NodeManagerUtils.connectionNodeIdToConnectionId(navNodeId)
|
||||
);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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<void> {
|
||||
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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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';
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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<InitConnectionMutationVariables, 'includeOrigin' | 'customIncludeOriginDetails' | 'includeAuthProperties' | 'customIncludeNetworkHandlerCredentials'>;
|
||||
@@ -45,7 +46,8 @@ export const DEFAULT_NAVIGATOR_VIEW_SETTINGS: NavigatorSettingsInput = {
|
||||
};
|
||||
|
||||
@injectable()
|
||||
export class ConnectionInfoResource extends CachedMapResource<string, Connection, ConnectionInfoIncludes> {
|
||||
export class ConnectionInfoResource extends CachedMapResource<string, Connection, ConnectionInfoIncludes>
|
||||
implements IConnectionsResource {
|
||||
readonly onConnectionCreate: ISyncExecutor<Connection>;
|
||||
readonly onConnectionClose: ISyncExecutor<Connection>;
|
||||
|
||||
@@ -81,7 +83,7 @@ export class ConnectionInfoResource extends CachedMapResource<string, Connection
|
||||
nodeIdMap: observable,
|
||||
updateConnection: action,
|
||||
createFromTemplate: action,
|
||||
createConnection: action,
|
||||
create: action,
|
||||
createFromNode: action,
|
||||
add: action,
|
||||
});
|
||||
@@ -103,17 +105,7 @@ export class ConnectionInfoResource extends CachedMapResource<string, Connection
|
||||
return undefined;
|
||||
}
|
||||
|
||||
async createFromTemplate(templateId: string, connectionName: string): Promise<Connection> {
|
||||
const { connection } = await this.graphQLService.sdk.createConnectionFromTemplate({
|
||||
templateId,
|
||||
connectionName,
|
||||
...this.getDefaultIncludes(),
|
||||
...this.getIncludesMap(),
|
||||
});
|
||||
return this.add(connection);
|
||||
}
|
||||
|
||||
async createConnection(config: ConnectionConfig): Promise<Connection> {
|
||||
async create(config: ConnectionConfig): Promise<Connection> {
|
||||
const { connection } = await this.graphQLService.sdk.createConnection({
|
||||
config,
|
||||
...this.getDefaultIncludes(),
|
||||
@@ -122,7 +114,7 @@ export class ConnectionInfoResource extends CachedMapResource<string, Connection
|
||||
return this.add(connection);
|
||||
}
|
||||
|
||||
async testConnection(config: ConnectionConfig): Promise<TestConnectionMutation['connection']> {
|
||||
async test(config: ConnectionConfig): Promise<TestConnectionMutation['connection']> {
|
||||
const { connection } = await this.graphQLService.sdk.testConnection({
|
||||
config,
|
||||
});
|
||||
@@ -141,6 +133,16 @@ export class ConnectionInfoResource extends CachedMapResource<string, Connection
|
||||
return this.add(connection);
|
||||
}
|
||||
|
||||
async createFromTemplate(templateId: string, connectionName: string): Promise<Connection> {
|
||||
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);
|
||||
|
||||
@@ -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<Connection>();
|
||||
readonly connectionExecutor: IExecutor<string | null>;
|
||||
|
||||
private disconnecting: boolean;
|
||||
private connectionExecutor: IExecutor<string | null>;
|
||||
|
||||
constructor(
|
||||
readonly connectionInfo: ConnectionInfoResource,
|
||||
readonly connectionObjectContainers: ContainerResource,
|
||||
private notificationService: NotificationService,
|
||||
private connectionAuthService: ConnectionAuthService,
|
||||
private commonDialogService: CommonDialogService
|
||||
) {
|
||||
this.disconnecting = false;
|
||||
this.connectionExecutor = new Executor<string | null>(null, (active, current) => active === current);
|
||||
this.connectionExecutor.addHandler(this.connectionDialog.bind(this));
|
||||
}
|
||||
|
||||
async requireConnection(connectionId: string | null = null): Promise<Connection | null> {
|
||||
@@ -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<string | null>) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<string, DBDriver, DriverListQueryVariables> {
|
||||
constructor(private graphQLService: GraphQLService) {
|
||||
constructor(
|
||||
private graphQLService: GraphQLService,
|
||||
permissionsResource: PermissionsResource,
|
||||
) {
|
||||
super();
|
||||
permissionsResource.require(this, EPermission.public);
|
||||
}
|
||||
|
||||
async loadAll(): Promise<Map<string, DBDriver>> {
|
||||
|
||||
@@ -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';
|
||||
}
|
||||
@@ -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<string, DatabaseConnection, GetConnectionsQueryVariables> {
|
||||
update: (config: ConnectionConfig) => Promise<DatabaseConnection>;
|
||||
create: (config: ConnectionConfig) => Promise<DatabaseConnection>;
|
||||
test: (config: ConnectionConfig) => Promise<TestConnectionMutation['connection']>;
|
||||
}
|
||||
@@ -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';
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -44,8 +44,8 @@ export abstract class CachedDataResource<
|
||||
> {
|
||||
protected loaded: boolean;
|
||||
|
||||
constructor(defaultValue: TData) {
|
||||
super(defaultValue, []);
|
||||
constructor(defaultValue: TData, defaultIncludes: ContextArg<TData, TContext>) {
|
||||
super(defaultValue, defaultIncludes as any as string[]);
|
||||
|
||||
this.loaded = false;
|
||||
|
||||
|
||||
@@ -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 {}
|
||||
}
|
||||
@@ -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,
|
||||
],
|
||||
};
|
||||
|
||||
@@ -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*
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"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",
|
||||
"@cloudbeaver/plugin-connections-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"
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -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';
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user