-
Notifications
You must be signed in to change notification settings - Fork 404
Custom Plugin
dbeaver-devops edited this page Feb 6, 2025
·
2 revisions
This guide explains how to create a custom plugin for CloudBeaver. It walks you through the process of adding a simple button to the application's top bar.
Follow these steps to create a custom plugin that adds a button to the top bar and logs Hello, World!
to the console.
- Inside
/webapp/packages
, create a folder with your desired name, e.g.,plugin-hello-world
.
- Copy the following files from any existing package into your plugin folder:
.gitignore
package.json
tsconfig.json
- Open
package.json
and update thename
field to your plugin's name,@cloudbeaver/plugin-hello-world
. - Remove the
dependencies
anddevDependencies
sections.
- Remove the
references
section fromtsconfig.json
.
- Inside your plugin folder, create a
src
folder. - Add two files in
src
:index.ts
manifest.ts
- Export the manifest from
index.ts
:export * from './manifest.js';
- Create a service to add the button.
- It should:
- Be an injectable class.
- Extend the
Bootstrap
class.
- Add a
register
method and implement the button-adding logic.
Example service:
import { Bootstrap, injectable } from '@cloudbeaver/core-di';
import { ActionService, MenuService } from '@cloudbeaver/core-view';
import { MENU_APP_ACTIONS } from '@cloudbeaver/plugin-top-app-bar';
import { ACTION_HELLO_WORLD } from './ACTION_HELLO_WORLD.js';
@injectable()
export class HelloWorldService extends Bootstrap {
constructor(
private readonly actionService: ActionService,
private readonly menuService: MenuService,
) {
super();
}
override register(): void {
this.menuService.addCreator({
menus: [MENU_APP_ACTIONS],
getItems: (context, items) => [...items, ACTION_HELLO_WORLD],
});
this.actionService.addHandler({
id: 'hello-world-handler',
actions: [ACTION_HELLO_WORLD],
handler: (context, action) => {
switch (action) {
case ACTION_HELLO_WORLD: {
console.log('Hello, World!');
break;
}
}
},
});
}
}
Create the ACTION_HELLO_WORLD
file:
import { createAction } from '@cloudbeaver/core-view';
export const ACTION_HELLO_WORLD = createAction('hello-world', {
label: 'Hello, world!',
});
Register your service in manifest.ts
:
import type { PluginManifest } from '@cloudbeaver/core-di';
export const helloWorldPlugin: PluginManifest = {
info: {
name: 'Hello World Plugin',
},
providers: [() => import('./HelloWorldService.js').then(m => m.HelloWorldService)],
};
Run the following command from /webapp
and choose the name of your plugin:
yarn add-plugin
Alternatively, if you're using VSCode, run the "Add Custom Plugin" workspace command.
In /webapp
, run:
yarn run update-ts-references
yarn
yarn run update-ts-references
Your button should now appear in the top bar and log Hello, World!
to the console when clicked.
- Application overview
- Demo Server
- Administration
- Server configuration
- Create Connection
- Network configuration settings
- Connection Templates Management
- Access Management
-
Authentication methods
-
Local Access Authentication
- Anonymous Access Configuration
- Reverse proxy header authentication
- LDAP
-
Single Sign On
-
SAML
-
OpenID
-
AWS OpenID
-
AWS SAML
-
AWS IAM
-
AWS OpenId via Okta
-
Snowflake SSO
-
Okta OpenId
-
Cognito OpenId
-
JWT authentication
-
Kerberos authentication
-
NTLM
-
Microsoft Entra ID authentication
-
Google authentication
-
Local Access Authentication
- User credentials storage
-
Cloud Explorer
-
Cloud storage
-
Query Manager
-
Drivers Management
- Supported databases
- Accessibility
- Keyboard shortcuts
- Features
- Server configuration
- CloudBeaver and Nginx
-
Domain manager
- Configuring HTTPS for Jetty server
- Command line parameters
- Local Preferences
- API
-
CloudBeaver Community
-
CloudBeaver AWS
-
CloudBeaver Enterprise
-
Deployment options
-
Development