Compare commits

..
492 Commits
Author SHA1 Message Date
sergeyteleshevandmr-anton-t c8457c2004 Cb 3960 migrate core blocks components to css modules (#2578)
* CB-3960 removes unused SlideBox styles

* CB-3960 makes menu panel reshadowless

* CB-3960 makes menu bar small item reshadowless

* CB-3960 removes reshadow from loaders

* fix: loader styles are the same as was

* fix: CB-3960 fix hidden actions in table footer

* fix: menu trigger

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-04-29 21:22:57 +03:00
1f3ae6a508 CB-5020 feat: wait till domain available (#2567)
* CB-5020 feat: wait till domain available

* CB-5020 fix: group styles

* CB-5020 add header to status endpoint

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
2024-04-29 16:26:02 +03:00
DenisSinelnikovandkseniaguzeeva a95f8d021f CB-4513. Added event for execute task success (#2575)
* CB-4513. Added event for execute task success


---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-04-29 09:43:30 +00:00
alexandEvgenia Bezborodova 6fd824e6a8 CB-4980 cancel file upload (#2573)
* CB-4980 cancel file upload

* CB-4980 use CanceledError instead of message mutation

* CB-4980 review fixes

* CB-4980 do not init cancel on close inside snackbar

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-04-29 12:16:26 +03:00
serge-rider 836acf879f Merge branch 'devel' of https://github.com/dbeaver/cloudbeaver into devel 2024-04-28 12:31:33 +02:00
serge-rider b44840730a GQL schema fix 2024-04-28 12:31:14 +02:00
alexandkseniaguzeeva 1bffe8a28a CB-4982 disable transaction manager for viewer (#2576)
* CB-4982 disable transaction manager for viewer

* CB-4982 change naming

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-04-26 16:49:32 +03:00
sergeyteleshev 885e423048 fix: adds webpack-dev-middleware resolution for package.json + updates yarn.lock (#2580) 2024-04-26 15:42:27 +03:00
Alexeyandmr-anton-t 8f87ec6618 Fix/cb-5019/components unification (#2560)
* CB-4629 fix: group close button

* CB-4629 fix: value presentation

* CB-4629 fix: tab focusing

* CB-5019 refactor: unify filter components

* CB-5019 fix: group title header styles

* CB-5019 fix: remove duplicated close button for creation forms

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-04-26 06:34:52 +03:00
alexandmr-anton-t 01ea4794ea CB-5033 remove reshadow from log viewer and other packages (#2561)
* CB-5033 remove reshadow from log viewer and other packages

* CB-5033 remove unused code

* CB-5033 migrate small data viewer components to css modules

* CB-5033 review fixes

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-04-25 20:25:15 +03:00
alexandEvgenia Bezborodova 7aaee5047e CB-4873 allow set blob data to null (#2574)
* CB-4873 allow set blob data to null

* CB-4873 truncated cells can be set to null

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-04-25 20:24:50 +03:00
b701d21d89 Cb 4268 force logout (#2549)
* CB-4703. Hide private ssl key, added new parameter to features

* CB-4631. Fix Build

* CB-4703. Hide private ssl key, added new parameter to features

* CB-4631. Fix Build

* CB-4631. Added logic

* CB-4728. Refactor after review

* CB-4268: adds too many session checkbox for local and federated authentication

* CB-4268 ux improve for force session dialog. do not close main popup if confirm dialog rejected

* CB-4268 cleanup

* CB-4268 adds too-many-sessions-plugin to close error of the external window while logging in

* CB-4268 cleanup

* CB-4268 cleanup

* CB-4268 auth dialog: removes unneeded state

* CB-4268. Add logic to force logout for federated users

* CB-4268. Added redirect for Federated users

* CB-4268. Update script

* CB-4268 split force session dialog checkbox for each tab its own instance

* CB-4268 set exceptions for each auth tab individually

* CB-4268 show error for all auth tabs

* CB-4268. Update script, refactor event for user

* CB-4268. Fixed force logout for sso

* CB-4268. Fixed class cast exception

* CB-4268. Refactor after review

* Revert "CB-4268 show error for all auth tabs"

This reverts commit 996bdfebdb.

* Revert "CB-4268 set exceptions for each auth tab individually"

This reverts commit dbeca03a31.

* Revert "CB-4268 split force session dialog checkbox for each tab its own instance"

This reverts commit cf79208d41.

* CB-4268 show error for all auth dialog tabs

* CB-4268 resets error state on auth dialog tab change

* CB-4268 fix: reset error state only on tab change

* CB-4268 auth login function cleanup

* CB-4268. Refactor after review, cleanup code

* CB-4268 removes too-many-sessions plugin

* CB-4268 removes unneeded translations

* CB-4268 fix: show login button only for non federated auth tabs

* CB-4268 refactor: reset error on switching auth mode

* CB-4268 stop resetting error with flag for auth dialog

* CB-4268 stop resetting error with flag for auth dialog (reset error default true)

* CB-4268 rename to ssoError.html

* CB-4268. Rename parameter for html

* CB-4268. Revert

* CB-4854. Refactor after review

* CB-4854. Refactor after review

* CB-4268 adds tooltip for force logout checkbox

* CB-4268 changes force sessions popup title to shorter version

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-04-25 13:20:24 +00:00
sergeyteleshev 426650076a CB-4947 increases webpack-dev-middle version (#2572) 2024-04-25 13:37:29 +03:00
alexandDaria Marutkina 035d2fe156 CB-5034 translate aria label in MenuActionElement (#2565)
* CB-5034 translate aria label in MenuActionElement

* CB-5034 translate additional tokens

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-04-25 13:15:41 +03:00
Alexey d70470b853 CB-5010 fix: ensure session opened (#2566) 2024-04-25 13:14:56 +03:00
AinurandDaria Marutkina 368c9e2179 CB-4796 update drivers for trino, oracle and sqlite (#2568)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-04-25 09:47:24 +00:00
Alexander Skoblikovandkseniaguzeeva 6ad136f2fa CB-4282 filter redundant '/' in event (#2571)
* CB-4282 filter redundant '/' in event

* CB-4282 update copyright

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-04-24 17:33:11 +02:00
DenisSinelnikovandDaria Marutkina 00f56e8c58 CB-4854. Change success message (#2569)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-04-24 17:32:41 +02:00
serge-rider ccefc5cb9b 24.0.4 version bump 2024-04-24 15:06:01 +02:00
Georgii 2a612aea63 INF-52 improvements (#2564) 2024-04-24 12:25:33 +02:00
sergeyteleshev b1349c7a07 CB-5036 disables uploading files for readonly tables for cells (#2570)
* CB-5036 disables uploading files for readonly tables for cells

* CB-5036 cleanup
2024-04-24 12:06:18 +02:00
alexandDaria Marutkina 99b9f6f193 CB-4932 add alt text to the logo (#2559)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-04-23 09:00:56 +03:00
51ef899922 Cb 4270 row counter add cancel button for big tables (#2545)
* CB-4270 adds cancel option for load total count of rows in table

* CB-4270 adds ui for load total count of rows in table

* CB-4270 fix: task cancels in a true way

* CB-4270 cleanup

* CB-4270 cancel load total count on close table tab

* CB-4270 cancel load total count on close sql editor tab

* CB-4270 fix: cancel close only task if it is not already cancelled

* CB-4270 chore: tasks -> cancelLoadTotalCountTasks

* CB-4270 stops counting rows when tab closes

* CB-4270 reverts incorrect calls of cancelLoadTotalCount

* CB-4270 reverts ToolsActions unneeded props

* CB-4270 pr fixes

* СB-4270 cancel load total count for refresh action

* CB-4270 fix: place cancelLoadTotalCount to DatabaseDataSource

* CB-4270 fix: cancel load rows in refresh data in data source

* CB-4270 cancels load on close result set tab

* CB-4270 refactor: move cancelLoadTotalCount to resultsetdatasource

* CB-4270 cancel load total count execute only for resultsetdatasource

* CB-4270 adds constraint for TableFooterRowCount

* CB-4270 fix: do not load new value if cancelled rows loading

* CB-4270 cleanup

* Revert "CB-4270 cleanup"

This reverts commit f8bffa253a.

* CB-4270 pr fixes

* CB-4270 pr fixes

* CB-4270 deletes cross icon icon

* CB-4270 DataSources has correct tree of calls for cancel and dispose functions

* CB-4270 cleanup

* chore: add experimental cancellable promise implementation

* CB-4270 pr fixes: remove unneeded disposes + close results in close result tab flow

* CB-4270 removes closeResults abstraction leak in ResultSetDataSource extended classes

* CB-4270 removes unused context in data sources

* CB-4270 adds loader for CancelTotalCountAction on cancel task action

* CB-4270 cancel row count job fix

* CB-4270 cancel row counter with notification

* CB-4270 pr fixes

* CB-4270 pr fixes

---------

Co-authored-by: Aleksei Potsetsuev <wrouds@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
2024-04-23 08:59:58 +03:00
Daria Marutkina acde2c5b8b Merge pull request #2563 from dbeaver/dariamarutkina-patch-2
CB_2403 chore: update README
2024-04-22 11:11:23 +02:00
Daria Marutkina 49247ade5d CB_2403 chore: update README 2024-04-22 11:11:11 +02:00
Alexey e355cdc953 fix: vscode update launch task (#2558) 2024-04-17 21:41:48 +08:00
Alexey 2198d5f69f fix: remove extra space for settings (#2557) 2024-04-17 21:36:47 +08:00
Alexey 1e373d9ff4 CB-5026 fix: root menu check (#2556) 2024-04-17 12:29:21 +03:00
Georgiiandserge-rider 8aeacfeb4e INF-36 [wip] allow downloading artifacts from p2 repositories (#2528)
Co-authored-by: serge-rider <serge@dbeaver.com>
2024-04-17 05:33:38 +02:00
3a304b1902 Cb 4631 backup database (#2536)
* CB-4631. Added logic for database backup h2

* CB-4631. Refactor after review, added information about postgres database to backuper

* CB-4631. Refactor after review, added information about postgres database to backuper

* CB-4703. Refactor after review

* CB-4631. Added flag to config for do backup

* CB-4631. Added flag to config for do backup

* CB-4631. renamed env parameters

* CB-4631. Revert schema version

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-04-16 20:08:39 +02:00
sergeyteleshev 916055eb6d fix: remove-uneeded-interface-prop (#2554) 2024-04-16 20:04:53 +02:00
91d83fdac8 CB-4767 generate domains using deployment manager (#2515)
* CB-4767 fix: group close styles

* CB-4767 chore: log only errors and warnings for webpack dev server

* CB-4767 chore: deprecate useController

* CB-4767 feat: an option to throw exceptions with useAutoLoad

* CB-4767 fix: rethrow exception from interrupted load of resource

* CB-4767 fix: replace useController with useResource

* CB-4767 feat: add schema validation for MetadataMap

* CB-4767 fix: wrap administration page with TabPanel

* CB-4767 feat: support for contents style in TabPanel

* CB-4767 feat: support for schema for useTabLocalState

* CB-4767 feat: support async form submitting

* CB-4767 feat: add skip localization

* CB-4767 fix: types

* CB-4767 feat: support administration tab state

* CB-4767 feat: form part getter API

* CB-4767 feat: async status read API

* CB-4770 clear all auth tokens when new domain is generated

* CB-4770 save common config api

* CB-4770 fixes after review

* CB-4770 fix sql query

* CB-4770 delete certificate on certbot and get workspace id

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
2024-04-16 17:33:39 +00:00
3e71a7a6ce Cb 4629 end user preferences (#2546)
* CB-4629 feat: enable user settings UI

* CB-4629 feat: localization

* CB-4629 feat: restore default settings

* CB-4629 feat: preferences menu

* CB-4629 chore: update ts references

* CB-4629 user preference store

* CB-4629 fix anonymous preferences

* CB-4629 nullable annotation

* CB-4629 refactor: context menu API

* CB-4629 fix: tools panel styles

* CB-4629 fix: remove outline for tab list

* CB-4629 fix: hide account tab in anonymous mode

* CB-4629 anonymous preferences

* CB-4629 read anonymous user parameters

* CB-4629 fix: zod validation and localization

* CB-4629 use websession preference store in completion context

* CB-4629 fix: revert tools styles

---------

Co-authored-by: Aleksei Potsetsuev <wrouds@gmail.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-04-16 17:25:57 +00:00
Ainurandmr-anton-t 9051abe90b CB-4996 recreate rm controller for user session (#2551)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-04-16 11:44:55 +00:00
Alexander Skoblikovandmr-anton-t 9a46bb2a88 CB-4502 dpi sql execute support (#2542)
* CB-4502 wip

* CB-4502 DPI: read data from container and script execution support

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-04-15 15:29:57 +00:00
alexandEvgenia Bezborodova c7ed9f3b5b CB-4933 focus snackbar on open (#2543)
* CB-4933 focus snackbar on open

* CB-4933 make notifications accessible for tab navigation

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-04-15 18:28:40 +03:00
alexandkseniaguzeeva e45267c17c CB-4358 omit patch version (#2548)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-04-15 14:54:53 +03:00
AlexeyandDaria Marutkina 8f29b67ba6 CB-4841 fix: concurrent tree update (#2539)
* CB-4841 fix: concurrent tree update

* CB-4841 chore: tree re-render optimization

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-04-12 16:40:31 +03:00
Alexey 0550cb9982 CB-4699 fix: prevent cell copy in editing mode (#2547) 2024-04-12 16:39:19 +03:00
alexandEvgenia Bezborodova 530af6dfed CB-4967 check that connection is not loading new data (#2541)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-04-11 13:39:48 +03:00
2a610c3f50 Cb 4911 add license headers with git hooks (#2504)
* adds husky with license script

* fix: license can pass file not fitted to provided FILES_PATH pattern

* license: notify user for updated files with new license header

* moves husky to frontend directory

* adds check for unstaged files with license

* change pre commit to pre push

* test: remove license from value panel

* Revert "test: remove license from value panel"

This reverts commit b690b75c6b.

* adds postinstall

* test: remove license from value panel [2]

* Revert "test: remove license from value panel [2]"

This reverts commit ea86fd3c57.

* sets back precommit

* CB-4911 validate missed license

* CB-4911 fix linter

* CB-4911 check license line by line

* CB-4911 feat: use node for license check

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Aleksei Potsetsuev <wrouds@gmail.com>
2024-04-10 14:08:20 +03:00
09dfae412c Replace bash process using java process instead of creating a sub process (#1452)
This enables docker to do a graceful shutdown of the container, because the java process gets notified that it should be terminated.

Co-authored-by: Anastasiya <45152336+LonwoLonwo@users.noreply.github.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-04-09 16:59:33 +00:00
serge-rider d605e09ef4 24.0.3 version bump 2024-04-09 17:52:03 +02:00
serge-rider 2dc97fb706 24.0.3 version bump 2024-04-09 17:51:34 +02:00
sergeyteleshevandEvgenia Bezborodova 9e3e4322a3 Cb 4178 te cloud storage improvements (#2532)
* CB-4178 chore: makes tree nodes names visible in react dev tools

* CB-4178 adds validation for loading files in cloud storage

* CB-4178 pr fixes

* CB-4178 pr fixes

* CB-4178 code cleanup

* CB-4178 selectFiles can return empty array

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-04-09 16:35:13 +03:00
alexandEvgenia Bezborodova 433eaacd24 CB-4960 remove data import button from query sources (#2529)
* CB-4960 remove data import button from query sources

* CB-4960 show import button only in container data source

* CB-4960 show import button on json tab

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-04-09 12:53:02 +03:00
Alexey fec9e856f6 fix: deprecated settings tests (#2538) 2024-04-09 17:49:34 +08:00
alexandDaria Marutkina 28714a628f CB-4966 remove unused detail from the timer icon (#2533)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-04-09 09:27:04 +03:00
Ainur fd82b24e5f CB-4917 remove applications from configuration controller and fix deserialization (#2531) 2024-04-08 09:18:54 +00:00
serge-rider d34d59ee6c Revert "CB-4603 Set global default user team ID"
This reverts commit b09a85d324.
2024-04-03 12:04:40 +02:00
serge-rider b09a85d324 CB-4603 Set global default user team ID 2024-04-03 10:36:19 +02:00
serge-rider 5ac7ece108 CB-4603 Set global default user team ID 2024-04-03 10:28:12 +02:00
serge-rider 449c31bf44 24.0.2 version bump 2024-04-02 20:24:10 +02:00
32b4e4ec19 CB-3330 add data import plugin (#2506)
* CB-3330 add data import plugin

* CB-3330 add mock api

* CB-3330 pass processor id

* CB-3330 remove extra code

* CB-3330 simplify logic, allow import only one file

* CB-3330. Implemented import data to table

* CB-3330 replace mocks with api

* CB-3330 add references

* CB-3330. Parsing request, added xml, xls

* CB-3330 support new settings

* CB-3330 use getter

* CB-3330 add svg icons

* CB-3330 pass arguments in handleImport fn

* CB-3330 remove extra fn wrapper

* CB-3330. Fix build

* CB-3330. Fix build

* CB-3330. Fix import

* CB-3330. Fixed import

* CB-3300 fix: frontend can build

* CB-3330. Refactor after review

* CB-3330. Refactor after review, delete temp file after import

* CB-3330. Refactor after review

* CB-3330. Refactor after review

* CB-3330. Added log message

* CB-3330. Added response for task

* CB-3330 fix icon and button shadow

* CB-3330. Refactor response value

* CB-3330. Refactor response value

* CB-3330. delete unused imports

* CB-3330 run additional task after file import

* CB-3330 always allow data import for admins

* CB-3330 import resource as module

---------

Co-authored-by: DenisSinelnikov <142215442+DenisSinelnikov@users.noreply.github.com>
Co-authored-by: denis.sinelnikov <denis.sinelnikov@dbeaver.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-04-02 16:51:27 +00:00
101d26158b CB-4603. Refactor searching by group, include default group for all s… (#2440)
* CB-4603. Refactor searching by group, include default group for all sql query with team

---------

Co-authored-by: DenisSinelnikov <denis.sinelnikov@dbaever.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-04-02 16:50:21 +00:00
Ainurandkseniaguzeeva 8b5aac0093 CB-4829 connection cache same ids fix (#2491)
* CB-4829 connection cache same ids fix

* CB-4829 find connection info with project id fix

* CB-4829 add project id to gql functions

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-04-02 16:47:48 +00:00
Serge RiderandDaria Marutkina 5fd847f209 CB-4924 Fix CVE-2022-45868. Remove web interface from H2 driver (#2526)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-04-02 17:23:37 +02:00
Alexander Skoblikov 2936b14aed CB-4500 preference to enable env variables resolving (#2522)
* CB-4500 preference to enable env variables resolving

* CB-4500 save systemVariablesResolvingEnabled to runtime config
2024-04-02 15:15:15 +00:00
sergeyteleshev 6dfbbecd59 CB-4943: fix: Value Panel has correct layout with new groups styles (#2524) 2024-04-02 15:52:58 +02:00
sergeyteleshevandDaria Marutkina 44b6f8a3ae Cb 4548 sql editor resultsets can be closed one by one only when execute sql statement has been used for several queries (#2503)
* CB-4548 fix: removes all result tabs on "close all" action

* CB-4548 adds "close all of the same query" action for sql result tabs

* Revert "CB-4548 adds "close all of the same query" action for sql result tabs"

This reverts commit 453664e41c.

* CB-4548 adds close all of the same group

* CB-4548 adds handleCloseTabGroup with SqlResultTabService

* CB-4548 sql editor bootstrap cleanup

* СB-4548 group tabs logic moved logic to sql-editor-plugin

* СB-4548 cleanup

* CB-4548 adds ACTION_TAB_CLOSE_SQL_RESULT_GROUP to the end of the tabs

* CB-4548 closes group tabs via tabs context close function (to save highlight tab logic)

* CB-4548 pr fixes

* CB-4548 code cleanup

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-04-02 11:55:42 +02:00
AlexeyandEvgenia Bezborodova 9f46e49e01 CB-4776 fix: input default value handling (#2518)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-04-02 11:44:17 +02:00
Alexander SkoblikovandDaria Marutkina 552163e6ee CB-4836 convert max idle time to seconds (#2514)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-03-29 15:31:42 +00:00
Alexey 517db739ae CB-4938 CB-4937 fix: metadata editor and shortcuts (#2520) 2024-03-29 17:38:18 +03:00
Ainur 8004db0f8b CB-4919 update results fix (#2509) 2024-03-28 17:00:45 +00:00
AinurandEvgenia Bezborodova 66f6ccb245 CB-4569 set default database when getting driver props (#2512)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-03-28 16:59:53 +00:00
77f531ddac Update trino driver to 438 (#2372)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Anastasiya <45152336+LonwoLonwo@users.noreply.github.com>
2024-03-28 16:58:42 +00:00
Cheng PanandDaria Marutkina 192da2c0d6 Support Apache Kyuubi as built-in datasource (#1336)
* Add Kyuubi driver JDBC driver 1.9.0
---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-03-28 16:58:06 +00:00
sergeyteleshevandEvgenia Bezborodova f3c6cf94d7 CB-4030 makes clear log viewer button sticky to the top-right corner (#2505)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-03-28 17:32:06 +03:00
eaa26dfe52 CB-4619 user scope settings (#2471)
* CB-4619 feat: update gql schema

* CB-4808 bulk update user parameters

* CB-4808 param type fix

* CB-4619 feat: updateUserPreferences API


* CB-4619 refactor: settings api

* CB-4619 refactor: move file

* CB-4619 refactor: settings api

* CB-4619 fix: pr review

* CB-4619 refactor: remove web-based product settings

* CB-4619 fix: after pr review

* CB-4619 refactor: move product conf to cloudbeaver conf

* CB-4619 fix: hide settings bar and log exception with changing session language

* CB-4619 fix: revert after merge

* CB-4808 new settings api

* CB-4808 update product.conf format

* CB-4808 update product.conf format

* CB-4619 feat: support server provided settings

* CB-4619 feat: prettify settings

* CB-4619 chore: map sql editor settings group

* CB-4808 add use short/long object name settings to CloudBeaver

* CB-4808 update default product.conf

* CB-4808 mode short/long settings to SQLModelPreferences

* CB-4808 review fix

* CB-4619 refactor: unit tests

* CB-4619 fix: prevent websocket opening spam

* CB-4619 fix: dependencies

* CB-4619 fix: remove extra theme loading

* CB-4619 fix: rename settings alias resolver file

* CB-4619 fix: after review

* CB-4619 fix conflicts

* CB-4619 rename server property

* CB-4619 remove shortname property

* CB-4619 fix legacy product conf reading

* CB-4619 merge root and runtime configurations

* CB-4619 chore: remove log viewer setting

* CB-4619 integer fields with env variables fix

* CB-4619 fix: property naming

* CB-4619 fix: parseJSONFlat null values

* CB-4619 fix: settings loading

* CB-4619 fix: save only actual settings

---------

Co-authored-by: Aleksandr Skoblikov <aleksandr.skoblikov@dbeaver.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-03-28 10:30:52 +00:00
AnastasiyaandDaria Marutkina b54dd5380d CB-4913 fix contact site link in the Product Information (#2507)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-03-27 14:44:49 +03:00
alexandDaria Marutkina f548406446 CB-4676 change delete button text to cancel (#2499)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-03-27 14:44:34 +03:00
ad37e89ecb CB-4686 add new client event for updating session info (#2462)
* CB-4810 add new client event for updating session info

* CB-4810 update request parameters on creating web session

* CB-4810 deprecate update session gql functions

* CB-4810 fix tests

* CB-4810 add params to session state event

* CB-4810 add params to gql schema

* CB-4686 feat: migrates touch session from REST to WebSockets

* CB-4686 fix: do not open websocket if session is expired

* Revert "CB-4686 fix: do not open websocket if session is expired"

This reverts commit 1f6ba77998.

* CB-4686 setData uses performUpdate for the SessionResource

* CB-4686 unsubscribes from the websocket when session expired event arrived

* Revert "CB-4686 unsubscribes from the websocket when session expired event arrived"

This reverts commit 7aeffffc67.

* CB-4810 rename client event

* CB-4686 pr fixes

* CB-4686 makes onDataOutdated execution manual

* CB-4686 fix: onDataOutdated.execute executes in the end of the performUpdate

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Alexey <wrouds@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-03-27 10:45:09 +00:00
sergeyteleshevandmr-anton-t a6a01c2896 CB-4910-broken-layout-for-login-identity-providers-form (#2498)
* authorization-federated-auth-providers-has-correct-layout

* Revert "authorization-federated-auth-providers-has-correct-layout"

This reverts commit cfd97b045d.

* fix: configList layout with container

* CB-4910 centers buttons in configuration list

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-27 09:01:29 +03:00
Ainurandmr-anton-t cae7699a48 Cb 4280 refactor cb application configuration logic (#2242)
* CB-4280 prettify reading configuration file

* CB-4280 serialize db config, remove it from te

* CB-4280 extract configs from app classes

* CB-4280 resolve conflicts

* CB-4280 fixes after review

* CB-4280 fix copyrights

* CB-4280 add comments

* CB-4280 resolve conflicts

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-26 15:12:49 +00:00
Daria Marutkina d9150180f9 Merge pull request #2497 from dbeaver/dariamarutkina-patch-1
CB_2401 chore: update README
2024-03-25 17:31:30 +01:00
Daria Marutkina 95b7f35228 CB_2401 chore: update README 2024-03-25 17:31:18 +01:00
alexandmr-anton-t 1fd1ebeecf CB-4074 transform metadata editor footer to the new context menu (#2490)
* CB-4074 transform metadata editor footer to the new context menu

* CB-4074 use existing data context for nodes

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-25 16:07:04 +01:00
Serge RiderandEvgenia Bezborodova 4daf1efe49 CB-4903 Clickhouse driver version update (#2494)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-03-25 14:03:05 +01:00
alexandmr-anton-t affbe444a0 CB-4707 move connection shield logic to separate component (#2478)
* CB-4707 move connection shield logic to separate component

* CB-4707 use lazy import

* CB-4707 revert interface

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-22 20:33:34 +03:00
sergeyteleshevands.teleshev e9163b8a2b cleans up the frontend ts references (#2493)
Co-authored-by: s.teleshev <s.teleshev@mu.se>
2024-03-22 12:38:24 +03:00
alexandmr-anton-t b3f7d85687 CB-4884 migrate sql editor to css modules (#2487)
* CB-4884 migrate sql editor to css modules

* CB-4884 review fixes

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-22 07:37:05 +03:00
e033a63f5c CB-4657 removes reshadow from plugin-connections-administration (#2484)
Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-22 07:32:32 +03:00
d4a9c6595e CB-4656 removes reshadow from plugin-connections (#2481)
Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-22 07:32:08 +03:00
7f5fb194c5 CB-4655 removes reshadow from plugin-authentication-administration (#2485)
Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-22 07:31:45 +03:00
2d44a492fc CB-4686 removes reshadow from core-ui (#2489)
* CB-4686 removes reshadow from core-ui

* CB-4283 pr fixes

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-22 07:30:47 +03:00
ebb517318b CB-4471 removes reshadow from plugin-administration (#2479)
* CB-4471 removes reshadow from plugin-administration

* CB-4471 fill is has higher style priority

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-21 20:34:37 +03:00
23de1131b9 CB-4654 removes reshadow from plugin-authentication (#2480)
* CB-4654 removes reshadow from plugin-authentication

* CB-4654 ConfigurationList uses container component

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-21 20:32:06 +03:00
alexandmr-anton-t a5911223ef CB-4859 migrate some styles from driver properties table and metadata… (#2469)
* CB-4859 migrate some styles from driver properties table and metadata editor

* CB-4859 use useS instead of clsx

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-20 14:13:19 +03:00
Alexey 37e4c699fe chore: update vscode configs (#2483) 2024-03-20 13:34:25 +03:00
Alexander Skoblikovandkseniaguzeeva f7b9dd188f CB-4867 remote preference store (#2474)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-03-19 13:13:01 +00:00
alex d4543efb24 CB-1084 fix ts version (#2477) 2024-03-19 13:30:42 +01:00
ShadelessFox 06089af0d0 dbeaver/dbeaver#12430 Make session invalidation working for simple cases (#2463) 2024-03-19 09:19:55 +01:00
AlexeyandEvgenia Bezborodova eea26a5942 CB-4222 feat: read blob data for value panel (#2422)
* CB-4222 feat: read blob data for value panel

* CB-4222 chore: review

* CB-4222 fix: text value presentation for binary files

* CB-4222 fix: hide hex and base64 text presentation for non-binary data

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-03-19 10:38:57 +03:00
493d5a8161 CB-4469 tabs reshadow refactor (#2448)
* CB-4469 adds fundaments for refactor: baseTabStyles, baseTabActionStyles, verticalRotatedStyles + some implementations

* CB-4469 adds license for new styles

* CB-4469 tabs-box reshadowless

* CB-4469 updated references

* CB-4469 adds license + fix build

* CB-4469 adds license

* CB-4469 fix tab icon position

* CB-4469 object folders reshadowless

* CB-4469 makes vertical side tabs for sql editor and table reshadowless

* CB-4469 adds TabPanelListNew + ValuePanel tabs reshadowless

* CB-4469 adds reshadowless tabs in admin settings + object viewer tabs also

* СB-4479 fix: removed deprecated styles from some vertical tabs

* CB-4469 chore: removed unused borderTabStyles

* CB-4469 adds reshadowless tabs for side bars

* CB-4469 fix: reshadowless tabs has no redundant styles

* CB-4469 makes auth dialog reshadowless

* CB-4469 make reshadowless admin user settings

* CB-4469 makes TeamForm reshadowless

* CB-4469 makes UserForm reshadowless

* CB-4469 makes ConnectionForm reshadowless + removes deprecated styles from bunch of tabs

* CB-4469 makes reshadowless TextValuePresentation in ValuePanel

* CB-4469 makes reshadowless user info form

* CB-4469 removed redundant styles from user info form

* CB-4469 makes sql result tabs reshadowless

* CB-4469 makes export data tabs reshadowless

* CB-4469 makes create connection for templates reshadowless

* CB-4469 deletes deprecated tabs files

* CB-4469 update ts references

* CB-4469 adds missing licenses

* CB-4469 removes deprecated styles

* CB-4469 removes background for tabs in value panel

* CB-4469 removes done to do

* CB-4469 removes done to do

* CB-4469 removes css duplication from ValuePanelEditorTabs

* CB-4469 correct styles context for table viewer

* CB-4469 adds scontext outer of tabstate component

* CB-4469 navigation tabs bar tabsBox has outline: none

* CB-4469 fix: object viewer has correct background colors

* CB-4469 removed unneened comment

* CB-4469 chore: admin page context spreaded correctly in layout

* CB-4469 refactor cleanup

* CB-4469: adds tabList style for registry

* CB-4469 fix: correct tabs underline for create connection/template

* CB-4469 remove nested styles from useS() hooks in components

* CB-4469 removes redundant styles from ObjectFolders useS() hook

* CB-4469 fix: correct imports for core-ui tabs elements

* CB-4469 chore: TabMenu keeps old name

* CB-4469 refactor: isolate module styles from tab registry ones

* CB-4469 refactor: isolate module styles from tab registry ones [2]

* CB-4469 refactor: isolate module styles from tab registry ones [3]

* CB-4469 refactor: isolate module styles from tab registry ones [4]

* CB-4469 refactor: isolate module styles from tab registry ones [5]

* CB-4469 fix: users administration tabs has correct size

* CB-4469 marks tabsBox as deprecated component

* CB-4469 tabPanel refactor

* CB-4469 refactor: Tab styles decomposed to smaller extendable parts

* CB-4469 refactor: component directory - styles -> shared

* CB-4469 refactor: adds TabList styles for underline, vertical and vertical-rotated tabs

* CB-4469 refactor: adds to vertical rotated tabs module styles for icon and title

* CB-4469 refactor: rename baseTab to just tab

* CB-4469 refactor: adds TabList styles for SqlResultTabs registry

* CB-4469 chore: use fill component for createConntection

* CB-4469 fix: saves file history for SqlEditor and UsersAdministration

* CB-4469 fix: saves file history for SqlEditorTabs

* СB-4469 chore: code cleanup

* СB-4469 chore: code cleanup

* CB-4469: removed style dependency from tab component

* CB-4469 uses fill component instead of css styles in CreateConnection

* CB-4469 always show tabOuter class for autotests

* CB-4469 code cleanup

* CB-4469 fix: revert tab component to get back close icon for scripts/datasets in TE

* CB-4469 chore: rename administration files

* CB-4469 adds tab actions component

* CB-4469 refactor: removes tab actions style dep from Tab component

* CB-4469 removes duplication of menu logic in tabs

* CB-4469 adds predefined tab and tabList registries all over the app

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-18 16:44:02 +01:00
5bf4278c65 Cb 1084 transactions (#2449)
* CB-4806 transactions api

* CB-1084 add commit mode plugin

* CB-1084 rename plugin

* CB-4806 add is auto commit property to web context

* CB-1084 add gql queries

* CB-1084 add loaders

* CB-4806 transactions for update results

* CB-4806 fix text

* CB-1084 pass execution context via extensions

* CB-1084 handle errors

* CB-1084 get connection before the task execution

* CB-1084 grab connection from transaction context

* CB-1084 support execution context provider for the object viewer

* CB-1084 refresh context manually

* CB-1084 check options panel status

* CB-1084 move transaction logic to the ConnectionExecutionContext

* CB-4806 make project id required

* CB-1084 make actions naming more unique

* CB-1084 remove success flag

* CB-1084 add plugin to default product

* CB-1084 show confirm dialog

* CB-1084 always fire disconnect through executor

* CB-1084 adjust behaviour

* CB-1084 add more explicit check

* CB-1084 interrupt disconnect if commit fails

---------

Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-03-18 14:33:57 +00:00
ShadelessFox 947a6a1eab Merge pull request #2475 from dbeaver/dbeaver/pro#2552-delete-profile
Dbeaver/pro#2552 delete profile
2024-03-18 14:00:37 +01:00
AlexeyandDaria Marutkina 4c9a6d2257 CB-3884 fix: tree empty flickering (#2457)
* CB-3884 fix: tree empty flickering

* CB-3884 fix: blink empty folder message in tree

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-03-18 15:26:30 +03:00
Sergei Kovalchukandkseniaguzeeva e78155a5d3 Dbeaver/pro#2552 [TE] deleted profiles appear again after app launch (#2429)
* dbeaver/pro#2552 [TE] deleted profiles appear again after app launch

Api fixed for store entire list of profiles

* dbeaver/pro#2552 [TE] deleted profiles appear again after app launch

Remove un used import

* dbeaver/pro#2552 [TE] deleted profiles appear again after app launch

Fixed api

* dbeaver/pro#2552 [TE] deleted profiles appear again after app launch

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-03-18 12:21:53 +01:00
kseniaguzeeva 5c2b65dde6 Merge branch 'devel' into dbeaver/pro#2552-delete-profile 2024-03-18 06:20:35 +03:00
Ainurandmr-anton-t 071824188f CB-4568 drop unused internal tables (#2468)
* CB-4568 drop unused internal tables

* CB-4568 execute dialect specific queries only if file exists

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-17 13:25:31 +03:00
Alexander SkoblikovandDaria Marutkina e72b40f4ae CB-4528 Snowflake SSO auth (#2470)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-03-15 17:31:17 +00:00
alexandDaria Marutkina 25b895c7aa CB-3977 remove connection from resource on driver delete (#2428)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-03-15 13:31:09 +03:00
Alexander SkoblikovandEvgenia Bezborodova 826d0c6f60 CB-4819 update composite documents attribute values (#2452)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-03-14 10:19:05 +00:00
serge-rider 1f8ed6231a Copyrights and release date updates 2024-03-14 08:51:10 +01:00
serge-rider 2d58c01257 24.0.1 version bump 2024-03-13 16:27:26 +01:00
serge-rider a28f4eb1e7 24.0.1 version bump 2024-03-13 16:26:29 +01:00
alexandDaria Marutkina 08702465b9 Cb 3989 sub folder deletion (#2444)
* CB-3989 preload all folders to validate folder name

* CB-3989 preload project

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-03-13 11:35:00 +03:00
alexandDaria Marutkina 70dafdc895 CB-4761 remove rtl mode from menu (#2424)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-03-12 18:08:33 +01:00
Alexey a1f5aab1f7 chore: update vscode workspace (#2466) 2024-03-12 23:33:41 +08:00
Ainurandnaumov c5930852b9 CB-4696 truncate string value fix (#2456)
* CB-4696 truncate content string value fix

* CB-4696 extend isText check to show quota message

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
2024-03-12 15:55:19 +01:00
serge-rider b5f3b0effa Merge branch 'devel' of https://github.com/dbeaver/cloudbeaver into devel 2024-03-12 15:39:01 +01:00
serge-rider 7f7d05dc46 dbeaver/pro#2522 Use custom launcher for all products 2024-03-12 15:37:08 +01:00
Anastasiya 2cacb3e1fa CB-4842 change brute force exception message (#2465) 2024-03-12 13:48:09 +00:00
Anastasiya 8adb27f7b1 CB-4839 fix reverse-proxy logout URL label (#2461) 2024-03-12 13:47:46 +00:00
f8de956a69 CB-4765 adds to object viewer rename table handler (#2425)
* CB-4765 adds to object viewer rename table handler

* CB-4765 code cleanup

* CB-4765 handle node rename runs in mobx action

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-03-12 16:01:44 +03:00
ShadelessFox b736de0329 dbeaver/pro#2589 Project reference fix (#2460) 2024-03-12 11:36:15 +01:00
Sergei Kovalchuk 794c10237f Merge branch 'devel' into dbeaver/pro#2552-delete-profile 2024-03-07 15:50:40 +01:00
Alexeyandmr-anton-t e13368db00 CB-4818 refactor: update NPM dependencies (#2450)
* CB-4818 refactor: update NPM dependencies

* CB-4818 chore: update react-data-grid fork

* CB-4818 fix: tests

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-07 14:32:43 +03:00
Ainur c3a85b6103 CB-4824 return network handlers for some embedded drivers (#2453) 2024-03-07 10:08:08 +00:00
Ainur 4bae903d74 CB-4816 refresh disabled drivers after loading runtime config (#2455)
* CB-4816 refresh disabled drivers after loading runtime config

* CB-4816 refresh drivers config only when starting server
2024-03-07 09:29:02 +00:00
Anastasiya 56cd55e62f Fix typo in the echo command (#2458) 2024-03-07 10:16:15 +01:00
Sergei Kovalchuk 89b831bb9e dbeaver/pro#2552 [TE] deleted profiles appear again after app launch 2024-03-06 14:23:29 +01:00
9934ed9787 CB-4743 adds html sanitizer (#2420)
* CB-4743 adds html sanitizer

* CB-4743 adds license to sanitizeHtml

* CB-4743 do not use sanitize to purify the json line data

* CB-4743 fix: toSafeHtmlString test correct cases

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-05 22:14:35 +03:00
alexandmr-anton-t 23328e7ea4 CB-4601 use more specific prop name (#2443)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-03-05 22:13:59 +03:00
Serge Rider 6d4bb860ae Dbeaver/pro#2523 annotations (#2447)
* dbeaver/pro#2523 Model annotations

* dbeaver/pro#2523 Model annotations
2024-03-05 18:27:47 +01:00
Alexey ab01bc5384 CB-4801 fix: remove baseFeatures setting (#2446) 2024-03-05 16:34:33 +08:00
Daria Marutkina 8e75f7cfe2 Merge pull request #2445 from dbeaver/dariamarutkina-patch-1
CB_2400 chore: update README
2024-03-04 16:41:07 +01:00
Daria Marutkina ab58f8570d CB_2400 chore: update README 2024-03-04 16:40:54 +01:00
alexandEvgenia Bezborodova 2894b21960 CB-4779 mark rows and columns getters as computed values (#2430)
* CB-4779 mark rows and columns getters as computed values

* CB-4779 wrap keys in computed

* CB-4779 remove unused import

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-03-01 12:23:54 +01:00
DenisSinelnikovandDenisSinelnikov b5dceef605 CB-4792. Change attribute names for rp identity provider (#2435)
Co-authored-by: DenisSinelnikov <denis.sinelnikov@dbaever.com>
2024-03-01 10:57:11 +00:00
62510fe18d Cb 4777 te log viewer access denied and anonymous access restricted errors after login (#2431)
* CB-4777 fix: removes an "anonymous access restricted" error from log viewer

* CB-4777 fix: isUserAvailable for userInfoService

* CB-4777 chore: code cleanup

* CB-4777 do not call rm api if not authorized in sm

* CB-4777 revert changes

* CB-4777 revert changes

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Aleksandr Skoblikov <aleksandr.skoblikov@dbeaver.com>
2024-02-29 17:06:57 +00:00
Sergei Kovalchuk 5889c753e6 dbeaver/pro#2552 [TE] deleted profiles appear again after app launch
Fixed api
2024-02-29 11:50:38 +01:00
Sergei Kovalchuk b4ccae2a0a dbeaver/pro#2552 [TE] deleted profiles appear again after app launch
Remove un used import
2024-02-29 11:33:40 +01:00
Sergei Kovalchuk 82750e3ed5 dbeaver/pro#2552 [TE] deleted profiles appear again after app launch
Api fixed for store entire list of profiles
2024-02-29 11:31:39 +01:00
Alexander SkoblikovandDaria Marutkina 9fe091d352 CB-4773 show license validation error (#2423)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-02-28 17:40:13 +00:00
Alexey ac75405f21 chore: update browserlist
* chore: update browserlist
2024-02-28 09:56:32 +03:00
AlexeyandDaria Marutkina e4e8fb92ae CB-4681 fix: content downloading in value panel (#2417)
* CB-4681 fix: content downloading in value panel

* CB-4681 fix: review

* CB-4681 fix: review

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-02-27 23:53:06 +03:00
e27d5d1de6 CB-4731. Fixed duplicate configuration server (#2411)
* CB-4731. Fixed duplicate configuration server

* CB-4731. Refactor after review

* CB-4731. Refactor after review

---------

Co-authored-by: DenisSinelnikov <denis.sinelnikov@dbaever.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-02-27 15:33:52 +00:00
AlexeyandDaria Marutkina a5f53cb271 CB-4740 fix(plugin-codemirror6): value equal check (#2414)
* CB-4740 fix(plugin-codemirror6): value equal check

* CB-4740 fix(plugin-codemirror6): incoming value equal comparison

* CB-4740 fix(plugin-codemirror6): initial cursor position restoration

* CB-4740 fix: sql editor mode detection

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-02-27 17:35:12 +03:00
b7a4cfac72 CB-4634 result set panel saves presentation info into the context (#2412)
* CB-4634 result set panel saves presentation info into the context

* CB-4634 adds license to SqlResultSetPanel styles

* Revert "CB-4634 result set panel saves presentation info into the context"

This reverts commit 5bf0d22e4e.

* CB-4634 adds to result set tab cache for value/grouping actions so divider behave alright

* CB-4634 fix: throw an error if result group was not found

* CB-4634 adds zod validation to tab restore in SqlEditor

* CB-4634 adds license to zod.scheme

* CB-4634 adds SqlEditorTabState uses interface generated with Zod

* CB-4634 chore: shceme -> schema

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-02-27 13:23:12 +01:00
AnastasiyaandMashaKorax 9bc66479a1 dbeaver/pro#2510 upgrade PG driver to 42.7.2 (#2407)
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2024-02-26 17:48:08 +01:00
Alexander Skoblikovandmr-anton-t a4f50c22ae CB-4747 force auth anonymous session (#2416)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-02-26 15:35:09 +00:00
alexandDaria Marutkina 5febf26b5a CB-4700 allow administrators to copy data (#2389)
* CB-4700 allow administrators to copy data

* CB-4700 allow editing for admin

* CB-4700 change desc message

* CB-4700 change if logic

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-02-26 16:38:37 +03:00
c0c4e1870a CB-4436 update session only in touchSession (#2377)
* CB-4436 update session only in touchSession

* CB-4346 adds session touch for user actions

* CB-4346 adds core-activity package

* CB-4346 fix: mobx version core-activity package

* CB-4346 ClientActivityService cleanup

* CB-4346 ClientActivityService cleanup [2]

* CB-4346 fix: client activity function contexts bind

* CB-4346 useClientActivity cleanup

* CB-4346 removed unneeded deps

* CB-4346 session warning dialog props renaming

* CB-4364 adds client activity service setsActivity method

* CB-4346 activity timers refactor

* CB-4346 adds min time for session expire setting

* CB-4346 adds update client activity each 300ms

* CB-4346 touchSession logic moved to SessionExpiredService

* СB-4346 session expire service uses session resource to touchSession

* CB-4346 code cleanup

* CB-4346 removed unused activity package from plugin session expiration

* CB-4346 SessionExpireService - removed cycle dependency

* CB-4346 code cleanup

* CB-4346 update session state if it is invalid

* CB-4346 removed arrow function from useClientActivity

* Revert "CB-4346 SessionExpireService - removed cycle dependency"

This reverts commit adba2d5eed.

* CB-4346 touchSession logic moved from SessionExpiredService to SessionResource because of cycle dependency

* CB-4346 chore: core-activity -> core-client-activity renaming

* CB-4346 chore: vars renaming

* CB-4346 refactor: removed force from sessionResource.touchSession()

* CB-4346 adds SessionTouchService

* CB-4346 chore: SESSION_EXPIRE_MIN_TIME const new name

* CB-4346 sessionTouchService license

* CB-4346 uses SessionTouchService as Dependency

* CB-4346 pr fixes

* CB-4346 adds core-localization to plugin-session-expiration

* CB-4346 adds core coreClientActivityManifest to unit tests

* CB-4346 updates ts references

* CB-4436 new update session gql api

* CB-4346 adds updateSession API call

* CB-4346 code cleanup sessionResource

* CB-4346 do not send state event for not authorized session

* CB-4346 chore: update session info with event

* CB-4346 adds update activity on touch (tablets, phones support)

* CB-4346 add debug log

* CB-4346 force update session on create

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Aleksei Potsetsuev <wrouds@gmail.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-02-23 17:02:04 +00:00
38987293a3 Cb 4590 prevent search field autocomplete (#2398)
* CB-4590 prevent autocomplete for search in connection-form filter

* CB-4590 fixes search autocomplete for devtools

* CB-4590 removed reshadow from plugin-devtools

* CB-4590 disable autocomplete for all passwords

* Revert "CB-4590 disable autocomplete for all passwords"

This reverts commit 4c20f46140.

* CB-4590 disable auto complete for auth provider passwords

* CB-4590 adds type="search" for all filters

* CB-4590 disables autocomplete for most of authentication forms (except local and ssh database)

* CB-4590 disables autocomplete for create database ssh tunnel passphrase

* CB-4590 better readability for props

* Revert "CB-4590 better readability for props"

This reverts commit 83f6f99995.

* Revert "CB-4590 disables autocomplete for create database ssh tunnel passphrase"

This reverts commit 06554215ac.

* Revert "CB-4590 disables autocomplete for most of authentication forms (except local and ssh database)"

This reverts commit c915f5bee1.

* CB-4590 chore: x for the input type search disabled in forms

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-02-23 18:49:42 +03:00
888b29c637 Cb 4694 te admin can assign his own team (#2391)
* CB-4716 admin can manage his own team

* CB-4717 allow team assigning in distributed mode

---------

Co-authored-by: Aleksandr Skoblikov <aleksandr.skoblikov@dbeaver.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-02-23 14:47:39 +00:00
9b050aa186 CB-4677. Refactor after review (#2387)
* CB-4677. Refactor after review

* CB-4677. Refactor after review

---------

Co-authored-by: DenisSinelnikov <denis.sinelnikov@dbaever.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-02-23 14:46:25 +00:00
0877d07d04 Cb 4430 file extension for export (#2405)
* CB-4430. Fixed file extention for export file json

* CB-4430. Fixed file extention for export file json

* CB-4430. Fixed checkstyle

* CB-4430. Refactor after review

---------

Co-authored-by: DenisSinelnikov <denis.sinelnikov@dbaever.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-02-23 14:45:26 +00:00
Alexeyandmr-anton-t 8c2b2e584e CB-4732 fix: fields auto hide behaviour (#2409)
* CB-4732 fix: fields auto hide behaviour

* CB-4732 fix: uncontrolled input state tracking

* CB-4732 fix: types

* CB-4732 fix(core-blocks): input default value handling

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-02-23 17:13:25 +03:00
serge-rider 701ff77f45 Azure and GCPdeps update 2024-02-23 13:45:24 +01:00
serge-rider b520333ddb 24.0.0 version bump 2024-02-23 09:56:30 +01:00
9ba77f112d CB-4719 fix: sql editor shows lock icon only for scripts (not datasets and etc) (#2404)
Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-02-22 14:31:35 +03:00
379e0cb3db CB-4685 disable default theme setting (temporary) (#2399)
Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-02-21 18:17:00 +03:00
79aaf010f3 CB-4688. Ignore empty X-Role header parameter, hide role param. (#2386)
* CB-4688. Ignore empty X-Role header parameter, hide role param.

* CB-4688. Refactor after review

* CB-4688. Refactor after review

* CB-4688. Refactor after review

---------

Co-authored-by: DenisSinelnikov <denis.sinelnikov@dbaever.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-02-21 17:44:04 +03:00
mayer 4f7d9751ec Devops 1040 pull common repo dep (#2403)
* dbeaver/dbeaver-devops#1040 added common build dependency

* dbeaver/dbeaver-devops#1040 added common build dependency bat
2024-02-21 12:50:11 +01:00
alexandEvgenia Bezborodova 307808a396 CB-4606 apply min validation to the fetch settings (#2396)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-02-21 14:01:15 +03:00
Alexander Skoblikov 5182ea1238 complex secret id (#2401)
* complex secret id

* unique secret id
2024-02-20 22:03:57 +03:00
sergeyteleshev 5d77ec02da Merge pull request #2400 from dbeaver/fix/identity-providers-config
fix: identity providers opens after ui creds branch merged to devel
2024-02-20 19:38:09 +01:00
s.teleshev 2401af1d7e fix: identity providers opens after ui creds branch merged to devel 2024-02-20 19:34:48 +01:00
serge-rider 7ec6edb31e dbeaver/pro#2452 Session auth info model 2024-02-20 18:15:34 +01:00
2b90eb038e CB-4561 te UI dynamic connection credentials based on the users team (#2381)
* CB-4598 npe fix

* CB-4561 refactor: connection info resource

* CB-4561 refactor: connection info resource

* CB-4561 load credentials from secret in initConnection

* CB-4561 merge devel

* CB-4561 allow initial team secrets test

* CB-4561 remove ability to use any secret in test connection

* CB-4561 feat: shared credentials management

* CB-4561 feat: connection secret authentication

* CB-4561 little fix

* CB-4561 feat: shared credentials

* CB-4561 chore: remove save credentials checkbox for shared credentials

* CB-4561 fix: send saved state for shared connection credentials

* CB-4561 feat: change shared secret authentication description

* CB-4561 fix: pr review comments

* CB-4561 fix: disable connection test for shared connections in distributed env

* CB-4561 fix: types

---------

Co-authored-by: Aleksandr Skoblikov <aleksandr.skoblikov@dbeaver.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-02-20 16:42:46 +01:00
mayer 662d991aca dbeaver/dbeaver-devops#1040 added common build dependency (#2397) 2024-02-20 14:07:51 +01:00
Daria Marutkina 67be5d9cc4 Merge pull request #2395 from dbeaver/dariamarutkina-patch-5
Update README.md
2024-02-20 11:04:37 +01:00
Daria Marutkina 615eeb997d Update README.md 2024-02-20 11:04:25 +01:00
Daria Marutkina afda51d452 Merge pull request #2394 from dbeaver/dariamarutkina-patch-4
CB_2335 chore: update README
2024-02-20 10:34:28 +01:00
Daria Marutkina c70b9d2053 CB_2335 chore: update README 2024-02-20 10:34:12 +01:00
DenisSinelnikovandDenisSinelnikov 6d6ab69c52 CB-4683. Change delimiter for reverse proxy group (#2385)
* CB-4683. Change delimiter for reverse proxy group

* CB-4683. Refactor after review. Added new parameter team delimiter for reverse proxy identity provider,

---------

Co-authored-by: DenisSinelnikov <denis.sinelnikov@dbaever.com>
2024-02-19 19:31:20 +03:00
alex 9c54fb10f1 CB-4695 show delete button in footer if deleting is true (#2383) 2024-02-19 18:51:48 +03:00
serge-rider a569e8eb0f Project deps update 2024-02-14 08:48:56 +01:00
8f01d49f5f CB-3563 cloudbeaver preference store (#2370)
* CB-3563 cloudbeaver preference store

* CB-3563 fix cb custom drivers folder

* CB-3563 fix default property initialization

* CB-3563 :feat adds proposal insert table setting to admins settings

* CB-3563 feat: sqlEditorService has field canInsertAlias

* CB-3563 adds plain keys to the settings

* CB-3563 removes redundant alias resolver for sqlEditor

* CB-3563 fix: sql editor ctrl + z does not cause an error while SQL script typing

* CB-3563 pr fixes

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-02-13 20:33:52 +03:00
cb897343bd Cb 4457 subcollections firestore (#2338)
* CB-4457. Add api for read subcollections firestore

* CB-4457. Move firestore to ee module

* CB-4457. Move firestore to ee module

* CB-4457. Added annotations for firestore

* CB-4457. Added metaData

* CB-4457. Fixed build

* CB-4457 add hasChildrenCollection flag

* CB-4457. Add new resultsRow

* CB-4457. Renamed SQLResultRowMetaData parameters

* CB-4457 add rows with metadata to schema

* CB-4457. Fix gql

* CB-4457. Added logic to get Firestore subcollection

* CB-4457. Refactor result, rename gql, added new type to return gql

* CB-4457. Revert list to map

* CB-4457. Get Subcollections info

* CB-4457. Refactor code

* Added sceleton for insert subcollection

* CB-4457. Added isSupportsDataFilter flag for subcollection

* CB-4457 add locales

* CB-4457. Added isSupportsDataFilter flag for subcollection

* CB-4457. Added update/insert logic for subcollection

* CB-4457 support collection editing

* CB-4457. Refactor after review, moved hierarchical model to ee.

* CB-4457 add SerializableKey

* CB-4457 keep only new rowsWithMetaData api

* CB-4457 review fixes

* CB-4457 review fixes

* CB-4457. Refactor after review. Added logic for delete

* CB-4457 pass metadata in deleted rows

* CB-4457 check row for undefined

* CB-4457 pass metadata when editing json

* CB-4457. Refactor edit, fix icons

* CB-4457. Refactor makeDocumentInputValue, created new method for locator

* CB-4457 try to get the current metadata for row

* CB-4457 clear cache on result update

* CB-4457 remove extra check

* CB-4457. Fixed npe

---------

Co-authored-by: DenisSinelnikov <denis.sinelnikov@dbaever.com>
Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Aleksei Potsetsuev <wrouds@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-02-13 18:29:22 +01:00
Alexander SkoblikovandEvgenia Bezborodova eea72bd467 CB-4673 validate default team exists (#2374)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-02-13 20:08:46 +03:00
b62b8d178d Cb 4375 support idle connection closing (#2368)
* CB-4365. Support idle connection closing

* CB-4375. Fix connection time

* CB-4375. Fixed checkstyle

* CB-4375. Refactor after review

* CB-4375. Refactor after review

* CB-4375. Refactor after review

* CB-4375. Refactor after review

* CB-4375. Refactor after review

* CB-4375. Refactor after review, change event type

* CB-4375. Refactor after review

---------

Co-authored-by: DenisSinelnikov <denis.sinelnikov@dbaever.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-02-13 20:08:29 +03:00
alexandDaria Marutkina 9828b1de1e CB-4567 add disableCopyData settings (#2378)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-02-13 13:45:05 +01:00
Alexey 325cbef1d8 chore: update version 23.3.5
* chore: update version 23.3.5
2024-02-13 10:47:34 +03:00
serge-rider 1e13e65205 23.3.5 version bump 2024-02-12 18:04:26 +01:00
alexandDaria Marutkina 426ab15bfc CB-4651 change wrap lines icons (#2371)
* CB-4651 change wrap lines icons

* CB-4651 remove icons from icons.svg

* CB-4651 add different size of icons

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-02-12 13:06:40 +03:00
898e7d9b9d CB-4570 add correct limits for text and blob columns in value panel (#2351)
* CB-4570 add correct limits for text and blob columns in value panel

* CB-4570 pr fixes

* CB-4570 adds shorter versions of limit messages

* CB-4570 pr fixes

* CB-4570 pr fixes

* CB-4570 code cleanup

* CB-4570 show more button moved to quota container

* CB-4570 code cleanup

* CB-4570 code cleanup

* CB-4570 quota placeholder to module css

* CB-4570 refactor: limit info in content action

* CB-4570 cleanup

* CB-4570 refactor: result set binary file implementation

* CB-4570 code clean

* CB-4570 adds QuotaPlaceholder getLimitInfo logic

* CB-4570 adds quota placeholder logic to not render when size is not truncated

* CB-4570 fix: shouldShowPasteButton reverted

* CB-4570 fix: show quota placeholder correctly

* CB-4570 code clean

* Revert "CB-4570 fix: show quota placeholder correctly"

This reverts commit d86b35e47a.

* CB-4570 fix: truncate image and text depending on current value panel presentation tab id

* Revert "Revert "CB-4570 fix: show quota placeholder correctly""

This reverts commit d5df008e89.

* CB-4570 code clean

* CB-4570 chore: dataContent has no image mentions

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-02-09 19:31:56 +03:00
alexandDaria Marutkina 1d497fe14f CB-4628 remove unused logic (#2367)
* CB-4628 remove unused logic

* CB-4628 remove onClean callback

* CB-4628 add applyDisabled prop

* CB-4628 check if apply is enabled on enter

* CB-4628 add disable actions prop

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-02-09 19:08:36 +03:00
Alexander Skoblikovandkseniaguzeeva 3965f16330 CB-4498 secrets cleanup (#2352)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-02-09 17:52:59 +03:00
Alexander Skoblikov 3891eed4a9 CB-4636 fix initial data configuration (#2358) 2024-02-09 14:24:18 +03:00
Serge Rider f980ee80b2 Merge branch 'devel' of https://github.com/dbeaver/cloudbeaver into devel 2024-02-08 13:44:24 +01:00
Serge Rider 1816016cf3 Repo dependencies 2024-02-08 13:43:07 +01:00
sergeyteleshev 9e051d5158 Merge pull request #2366 from dbeaver/CB-4633-unit-tests-licenses
CB-4633 adds licenses to unit tests
2024-02-07 17:38:27 +01:00
s.teleshev 7437b9e5eb CB-4633 adds licenses to unit tests 2024-02-07 17:37:41 +01:00
sergeyteleshevands.teleshev d96b9e94ad Cb 4633 unit tests for utils (#2357)
* CB-4633 blobToBase64 unit tests

* СB-4633 importLazyComponent tests

* CB-4633 OrderedMap unit tests

* CB-4633 removed test time limit from blobToBase64 test

* CB-4633 adds to ordered map unit tests for edge cases

* CB-4633 importLazy moved to core-blocks

* CB-4633 adds update-ts-references

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
2024-02-07 19:31:19 +03:00
7eba02ac1f CB-4535. Remove Ability to edit all users team (#2341)
* CB-4535. Remove Ability to edit all users team

* CB-4536. Fixed test

* CB-4536. Refactor after review.

* CB-4536. Refactor after review

* CB-4536. Refactor after review

* CB-4536. Refactor after review

* CB-4536. Refactor after review

* CB-4536. Refactor after review.

* CB-4536. Auto filled default group for all user when application is started

* CB-4536. Refactor after review

* CB-4536. Fixed update empty list

* CB-4536 feat: display default user team info

* CB-4536 chore: code cleanup

---------

Co-authored-by: DenisSinelnikov <denis.sinelnikov@dbaever.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Aleksei Potsetsuev <wrouds@gmail.com>
2024-02-07 18:15:42 +03:00
Serge Rider e285ad0279 CB-4645 Null descriptions fix (#2359) 2024-02-07 17:56:49 +03:00
AnastasiyaandMashaKorax 6b2f314383 dbeaver/pro#2420 update MariaDB driver to 3.3.2 (#2362)
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2024-02-07 14:12:00 +03:00
Serge Riderandkseniaguzeeva 09e5141e37 dbeaver/pro#2403 AWS secret controller stub (#2350)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-02-07 14:07:55 +03:00
Alexander Skoblikov 0c03d201a8 CB-4596 fix http cookies (#2363) 2024-02-06 16:50:46 +03:00
sergeyteleshevands.teleshev d96e0b812d CB-4400 removed project margin styles to prevent tree jump on DnD (#2344)
* CB-4400 removed project margin styles to prevent tree jump on DnD

* CB-4400 removed DND jump lag for connection/script/dataset trees

* CB-4400 top tree project has margin

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
2024-02-06 09:52:35 +03:00
Alexander Skoblikov 98d7d1f0d5 update sql to support oracle (#2355) 2024-02-05 15:49:01 +03:00
590830cbb5 CB-4605 fix: sql editor shows datasets panels correctly (#2347)
* CB-4605 fix: sql editor shows datasets panels correctly

* Revert "CB-4605 fix: sql editor shows datasets panels correctly"

This reverts commit 5e2afc5296.

* CB-4605 fix: TE edit dataset works fine with new dividers

* CB-4605 revert sqleditor displayed editors state

* CB-4605 removed sqlEditor hack to open full size dataset

* Revert "CB-4605 removed sqlEditor hack to open full size dataset"

This reverts commit 7ad98e42b4.

* CB-4605 sqlEditor works as it was for EE and TE

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-02-05 15:47:23 +03:00
Daria Marutkina 4d04f4b2ee Merge pull request #2356 from dbeaver/dariamarutkina-patch-3
CB_2334 chore: update README
2024-02-05 13:15:57 +01:00
Daria Marutkina 8cdfb12ecc CB_2334 chore: update README 2024-02-05 13:15:47 +01:00
Alexander Skoblikov 30e0bad784 fix schema version (#2354) 2024-02-05 13:41:18 +03:00
Serge RiderandEvgenia Bezborodova f8e74f926c CB-4617 NPE fix (#2349)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-02-05 12:31:30 +03:00
Alexey b7ab8b13d6 CB-4611 fix: revert font size changes (#2348) 2024-02-01 17:16:12 +03:00
8585af7f1a Cb 4429 change divider behavior (#2335)
* CB-4429 adds visible buttons for resizers

* CB-4429 adds auto margin to dividers

* CB-4429 fix initial auto margin

* CB-4429 adds auto margins without hook

* CB-4429 split controls cleanup

* CB-4429 hide content if panel minimized

* CB-4429 remove ts ignore

* CB-4429 Pane cleanup

* CB-4429 update go-split

* CB-4429 pane renders null if it is minimized splitter

* CV-4429 removed children memoization in Pane component

* CB-4429 fix: hide content if maximized pane

* CB-4429 chore: update go-split version

* CB-4429 update go-split lib

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Aleksei Potsetsuev <wrouds@gmail.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-01-31 20:34:52 +03:00
fdde4348a2 CB-3703 save product configuration from ui (#2334)
* CB-4560 api for saving product configuration

* CB-4560 save product config in te

* CB-4560 move update product config to mutations

* CB-3703 feat: extend base components

* CB-3703 feat: settings editor

* CB-3703 chore: review fixes

* CB-3703 chore: pr review

* CB-3703 feat: update server configuration icon

* CB-4560 add events

* CB-3703 fix: localization

* CB-3703 chore: localization

---------

Co-authored-by: Alexey <wrouds@gmail.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-01-31 20:33:05 +03:00
11adc7d3d6 dbeaver/pro#2404 Revert legacy Clickhouse driver (#2337)
Co-authored-by: Matvey16 <82543000+Matvey16@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2024-01-31 19:23:05 +03:00
alexandEvgenia Bezborodova d79ab9593e CB-4489 increase class priority (#2345)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-01-31 19:18:23 +03:00
alexandDaria Marutkina cf2d647aea CB-4591 do not require password if its saved (#2342)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-31 19:17:48 +03:00
Alexey a698363dfd chore: update javaConfig (#2346) 2024-01-31 18:25:00 +03:00
a2094a4d90 CB-3834 secret controller redesign (#2343)
* CB-3834 Secret manager database schema

* CB-3834 add credentials storage flat to teams

* CB-3834 subject based secrets

---------

Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-01-31 16:52:00 +03:00
Alexander SkoblikovandDaria Marutkina 71a61047e2 CB-4257 validate required features for providers (#2322)
* CB-4257 validate required features for providers

* CB-4257 rename types - categories

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-31 11:23:58 +03:00
alexandDaria Marutkina cd7ffe6c2e CB-4504 transform coordinates according to the chosen srid (#2331)
* CB-4504 transform coordinates according to the chosen srid

* CB-4504 add licence

* CB-4504 move types to dev deps

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-30 17:22:52 +01:00
Ainur 7a45f2feea CB-4476 data source folder send event fix (#2340) 2024-01-30 17:46:26 +03:00
Serge Rider ba208ad024 INF-10 Include dbeaver-common in build 2024-01-29 17:16:08 +01:00
sergeyteleshevands.teleshev 04236b949b CB-4531 fix: connect to the tables/connections without red screen error (has connection already) (#2339)
Co-authored-by: s.teleshev <s.teleshev@mu.se>
2024-01-29 15:35:20 +03:00
Serge Rider 1e4cbd60b8 23.3.4 version bump 2024-01-26 11:46:08 +01:00
Serge Rider a33c17a997 23.3.4 version bump 2024-01-26 11:43:39 +01:00
f41c485ba0 Cb 4382 anonymous access restricted error (#2302)
* CB-4382 fixed anonymous error

* CB-4382 move EAdminPermission to root-resources in order to FeatureResource can import it

* CB-4282 EAdminPermission moved to core-root

* CB-4382 update-ts-references

* СB-4382 removed unneeded deps in packages

* CB-4282 revert needed deps to be present

* CB-4382 reverted popperjs for plugin-data-spreadsheet-new

* CB-4382 TE error fix for fast opening admin server settings

* CB-4382 update yarn lock

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Alexey <wrouds@gmail.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-01-25 17:42:58 +03:00
AlexeyandDaria Marutkina ba3ca5e28a CB-4236 feat: script reopen (#2324)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-25 17:40:31 +03:00
Serge RiderandDaria Marutkina 3c4f4a988d CB-4573 PostgreSQL driver updated to 42.5.2 (#2332)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-25 13:43:46 +03:00
alexandEvgenia Bezborodova 3e93752d53 CB-4134 adjust cursor position (#2299)
* CB-4134 adjust cursor position

* CB-4134 pass controlled cursor to the editor

* CB-4134 do not trim value

* CB-4134 revert const history

* CB-4134 review fixes

* CB-4134 remove onUpdate method

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-01-25 10:47:47 +03:00
Mikhailov Grigorii 8df248bfde #984 Changed to 23.10 ubuntu (#2329) 2024-01-24 18:13:49 +03:00
6553132019 CB-4023 sets equal window sizes on edit dataset (#2325)
* CB-4023 sets equal window sizes on edit dataset

* СB-4023 sql editor sets size on displayed editors change

* CB-4023 sqlEditor isEditorEmpty flag for SqlEditor

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-01-24 17:37:56 +03:00
Daria Marutkina bcda5ebbd8 Merge pull request #2330 from dbeaver/dariamarutkina-patch-2
CB_2333 chore: update
2024-01-24 13:10:21 +01:00
Daria Marutkina 53fca74dfe CB_2333 chore: update 2024-01-24 13:10:07 +01:00
Alexey 92b5d47232 chore: fix build broken gql (#2328) 2024-01-24 12:46:40 +03:00
Alexey b0a34c7d75 CB-4541 refactor: tree (#2326)
* CB-4541 refactor: tree

* CB-4541 chore: revert test code
2024-01-24 12:31:48 +03:00
47f1267957 Cb 4523 remove identity providers tab (#2310)
* CB-4523 move identity providers from plugin-authentication-administration

* CB-4523 remove * dep

---------

Co-authored-by: Alexey <wrouds@gmail.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-01-24 09:42:03 +03:00
AlexeyandEvgenia Bezborodova 544f3a8dd3 CB-4539 fix: value panel auto type detection (#2320)
* CB-4539 fix: value panel auto type detection

* CB-4539 feat: add wrap lines action

* CB-4539 fix: remove extra button

* CB-4539 chore: enable line wrapping by default

* CB-4539 fix: quota message

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-01-23 19:35:00 +03:00
4cdb3ac30b Cb 4389 convert reverse proxy (#2300)
* CB-4389. Converted reverse proxy to identity provider

* CB-4039 build logout redirect link on backend side

* CB-4039 fix return value

* CB-4389. Added auto configuration for Reverse proxy if its enabled on ce, fixed typo, rename plugin parameters

* CB-4389. Added check for already exist configuration

* CB-4389. Refactor after review

* CB-4039 adds logout with context for Okta Identity Provider

* CB-4039 backward compatibility fix

* CB-4039 add since annotation

* CB-4039 api return type fix

* CB-4039 logout extended

* CB-4389. Refactor after review

* CB-4389. Refactor after review

* CB-4039 okta logout redirect moved to AuthenticationService

* CB-4039 remove windowService dep

* CB-4039 removes old logic of identity provider logout links

* CB-4039 okta review changes

* CB-4389. Merge logout logic into branch

* CB-4389. Delete param after review

* CB-4389. Converted reverse proxy to identity provider

* CB-4389. Added auto configuration for Reverse proxy if its enabled on ce, fixed typo, rename plugin parameters

* CB-4389. Added check for already exist configuration

* CB-4389. Refactor after review

* CB-4389. Refactor after review

* CB-4389. Refactor after review

* CB-4039 adds logout with context for Okta Identity Provider

* CB-4039 okta logout redirect moved to AuthenticationService

* CB-4389. Merge logout logic into branch

* CB-4389. Delete param after review

* CB-4546 shows hex/base64 only on blob column selection (#2314)

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>

* CB-4389. Fix logout redirect and npe for logout parameter

* CB-4389. Fix logout redirect and npe for logout parameter

* CB-4389. Change version

---------

Co-authored-by: Aleksandr Skoblikov <aleksandr.skoblikov@dbeaver.com>
Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2024-01-23 19:15:34 +03:00
AinurandDaria Marutkina f4fd603297 CB-4441 mariadb fix clear auth attempt info (#2313)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-23 19:14:51 +03:00
76454a352d CB-4546 shows hex/base64 only on blob column selection (#2314)
Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-22 18:38:19 +03:00
35b625c1df CB-3015: adds an fadeout animation & min close delay time to all noti… (#2306)
* CB-3015: adds an fadeout animation & min close delay time to all notifications

* CB-3015 revert closeDelay in NotificationItem

* CB-3015 shows notification if it is not closed during first 300ms

* Revert "CB-3015 shows notification if it is not closed during first 300ms"

This reverts commit 184aae708e.

* CB-3015 show process snack bar with delay fix

* CB-3015 snackbar removed potential deps bug

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-22 18:31:43 +03:00
bc7cd3b217 CB-4289 add file name param for data export (#2308)
* CB-4289 add file name param for data export

* CB-4289 pass file name based on context

* CB-4289 use existing export action

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-01-22 18:30:36 +03:00
sergeyteleshevands.teleshev 3274988d4a CB-4551 unit tests form timestampToDate and cacheValue (#2316)
* CB-4551 unit tests form timestampToDate and cacheValue

* CB-4551 cacheValue added one more test case

* CB-4551 removed unused plugins for tests

* CB-4551 all tests has UTC timezone

* СB-4551 fix: icons has no data-test id

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
2024-01-22 14:10:23 +03:00
Evgenia Bezborodova 38e5fa0cbb Merge pull request #2321 from dbeaver/EvgeniaBzzz-patch-2
CB_2333: update README.md
2024-01-22 13:36:19 +03:00
Evgenia Bezborodova 75413db6a5 CB_2333: update README.md 2024-01-22 13:36:04 +03:00
Alexey 6b124072e9 chore: performance improvements (#2319) 2024-01-21 16:18:35 +03:00
a230dac79e Cb 4403 map ad roles (#2295)
* CB-4403. Implement import with auth roles for AD

* CB-4403 feat: add auth role provided flag

* CB-4403. Refactor after review, added auto configurable flag

* CB-4403. Refactor after review

* CB-4403. Refactor after review

* CB-4403. Refactor after review

* CB-4403. Fixed set teams for imported users

* CB-4403. Refactor after review

* CB-4403. Refactor after review

---------

Co-authored-by: Denis Sinelnikov <denis.sinelnikov@dbeaver.com>
Co-authored-by: DenisSinelnikov <142215442+DenisSinelnikov@users.noreply.github.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-01-19 21:11:39 +03:00
alex 10c1b374fc Cb 4534 fix circle deps (#2312)
* CB-4534 fix empty password validation (#2311)

* CB-4534 move password policy hook to core blocks
2024-01-18 16:45:04 +01:00
alex 80ce154b03 CB-4534 do not validate empty password, required attribute will (#2309)
* CB-4534 do not validate empty password, required attribute will

* CB-4534 remove trim
2024-01-18 14:19:38 +01:00
8ba0eb64b8 CB-4264 password policy configuration (#2301)
* CB-4491 password policy config api

* CB-4491 move policy config to sm

* CB-4491 cb config fix

* CB-4264 add password policy

* CB-4491 deserialization fix

* CB-4491 deserialization fix

* CB-4264 add title

* CB-4264 rename params

* CB-4264 fix naming

* CB-4264 accept any language

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-17 19:26:01 +01:00
0544547f27 CB-4039 logout with context (#2296)
* CB-4039 build logout redirect link on backend side

* CB-4039 fix return value

* CB-4039 adds logout with context for Okta Identity Provider

* CB-4039 backward compatibility fix

* CB-4039 add since annotation

* CB-4039 api return type fix

* CB-4039 logout extended

* CB-4039 okta logout redirect moved to AuthenticationService

* CB-4039 remove windowService dep

* CB-4039 removes old logic of identity provider logout links

* CB-4039 okta review changes

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-17 20:29:31 +03:00
5db30be61b CB-4285 read full value from text cell (#2288)
* CB-4494 api for reading full value from text cell

* CB-4494 apply function fix

* CB-4285 graphql getFileFullText for files

* CB-4285 textValuePresentation refactor

* CB-4285 textValuePresentation refactor - removed unneeded fields

* CB-4285 textValuePresentation canSave in data ref

* CB-4285 paste full text button

* CB-4285 observable map for full text in textValuePresentation

* CB-4285 reset cases comment removed (all works cool)

* СB-4285 buttons in tools container is now nearby each other

* CB-4285 use content action for caching full texts

* CB-3842 use only one row in getting full value

* CB-3842 use not null at read lob value

* CB-4285 schema changes for sqlReadString and sqlReadLobValue

* CB-4285 TextValuePresentation refactor

* CB-4285 useTextValue refactor

* CB-4285 PR comments applied

* CB-4285 view full text button for ValuePanel + remove truncated warning if loaded full text

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-01-17 20:02:17 +03:00
Alexander SkoblikovandEvgenia Bezborodova ea0493883a CB-4446 more clear way to provide database credentials (#2304)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-01-17 17:52:34 +03:00
d8f197e8a7 CB-3832 fix notification text visibility for export ones (#2305)
Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-17 10:11:58 +03:00
Serge Riderandkseniaguzeeva 28c37c2971 CB-4514 SM apps refactoring + RM, QM, TE, TM configuration (#2298)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-01-16 15:49:57 +03:00
alexandDaria Marutkina 2bd727aac2 CB-3995 move anonymous id to const (#2292)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-12 18:58:01 +01:00
f463ea558f CB-4309 add keep alive interval for data source (#2269)
* CB-4309 add keep alive interval for data source

* CB-4309 adds keep-alive checkbox to connection form additional fields

* CB-4309 removed custom validation for keep-alive setting

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-01-12 20:48:16 +03:00
5caffd0a04 CB-4162 init connection check username network handler param only for… (#2293)
* CB-4162 init connection check username network handler param only for ssh

* CB-4162 SSL secureProperties are not trimmed if is undefined

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: s.teleshev <s.teleshev@mu.se>
2024-01-12 20:45:02 +03:00
Alexey 8fdecdf757 CB-4485 fix: bundle splitting (#2282) 2024-01-12 18:48:26 +03:00
Alexander SkoblikovandDaria Marutkina dbe2cb558d CB-4301 qm autoreconnect (#2265)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-11 20:39:40 +03:00
alexandDaria Marutkina bb743ac5b0 CB-3955 hide presentation bar in statistics mode (#2289)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-11 17:28:26 +01:00
AinurandDaria Marutkina 44531191a8 CB-4487 add duckdb driver (#2285)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-11 19:26:22 +03:00
cdfdb89a4d Cb 4010 auth methods dont update when switching drivers (#2286)
* CB-4010 connection form removed reshadow

* CB-4010 feat: is equal resources

* CB-4010 :feat isArraysEqual performance optimization

* CB-4010 connections options cleanup

* CB-4010 fix: isArraysEquals works with multiple objects and multiple type of data (primitive and not) in one array

* CB-4010 fix: resource isEqual can compare not only primitives

* CB-4010 chore: add isEqual to resource list class

* CB-4010 add to isArraysEqual edge cases + tests

* CB-4010 chore: remove unused import

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Alexey <wrouds@gmail.com>
2024-01-11 14:54:41 +03:00
alexandDaria Marutkina 768f3bc951 CB-4468 iterate over copy of state array (#2278)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-11 14:54:18 +03:00
AlexeyandDaria Marutkina b0586e7ccb CB-4401 feat: save value panel state per column (#2272)
* CB-4401 feat: save value panel state per column

* CB-4401 fix: pr review

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-11 14:53:55 +03:00
alexandDaria Marutkina 5041312601 CB-4442 add box styles to the form itself (#2277)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-10 14:37:10 +01:00
DenisSinelnikovandDaria Marutkina 8f66979dc4 CB-4377. Error text is more detailed to export large sql result (#2274)
* CB-4377. Error text is more detailed to export large sql result

* CB-4377. Error text is more detailed to export large sql result

* CB-4377. Fixed typo in error message

* CB-4377. Fixed typo in error message

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-10 15:33:46 +03:00
DenisSinelnikovandDaria Marutkina 51bbc59fe4 CB-4484. Rename error message for bruteforce protection (#2280)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-10 15:32:18 +03:00
AlexeyandDaria Marutkina 008f7f9659 CB-4344 fix: table column width calculation (#2273)
* CB-4344 fix: table column width calculation

* CB-4344 fix: pr review

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-10 13:08:28 +03:00
serge-rider f7ac96bcf2 Merge remote-tracking branch 'origin/devel' into devel 2024-01-10 10:37:09 +03:00
serge-rider 904375aa66 dbeaver/pro#2341 Copyright update 2024-01-10 10:31:38 +03:00
alexandmr-anton-t 13bd5c41c0 CB-4479 always satisfy hash function argument type (#2279)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-01-10 08:21:00 +03:00
serge-rider dd6aa25bad 23.3.3 version bump 2024-01-09 22:21:37 +03:00
serge-rider 7e0cfa50d4 23.3.3 version bump 2024-01-09 19:19:08 +03:00
Daria Marutkina e08f6b3a1b Merge pull request #2284 from dbeaver/dariamarutkina-patch-1
CB_2332 chore: update README
2024-01-09 11:28:07 +01:00
Daria Marutkina 0ba36db4a4 CB_2332 chore: update README 2024-01-09 11:27:36 +01:00
alexandAleksei Potsetsuev 459681bffa CB-4395 add custom eslint rule for deprecated packages (#2227)
* CB-4395 add custom eslint rule for deprecated packages

* CB-4395 feat: custom eslint rules

* CB-4395 feat: custom eslint rules

* CB-4395 chore: eslint plugin catch exceptions

* CB-4395 chore(eslint-plugin): remove extra deps

---------

Co-authored-by: Aleksei Potsetsuev <wrouds@gmail.com>
2024-01-09 09:50:41 +03:00
87c8b57d05 Cb 4467 utils unit tests (#2275)
* CB-4467 adds pack of unit tests for utils

* CB-4465 get path utils covered with tests

* CB-4467 isNotNullDefined unit tests

* CB-4467 adds pack of unit tests for utils

* CB-4467 parseJSONFlat unit tests

* CB-4467 unit tests for svgToDataUri and replaceMiddle

* CB-4467 throttle utils

* CB-4467 PR fixes

* CB-4467 base64 images examples for getMIME

* CB-4467 fix: throttle function type and exception catching

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Aleksei Potsetsuev <wrouds@gmail.com>
2024-01-08 10:47:46 +03:00
mayer 79e55f7089 devops: revert docker (#2271) 2024-01-04 11:26:31 +03:00
serge-rider 145febbdde 23.3.2 version bump 2024-01-03 21:28:12 +03:00
serge-rider 544cd0fa5b 23.3.2 version bump 2024-01-03 21:25:06 +03:00
9aace7c0ce Cb 4364 remove spaces at the beginning of the input fields (#2252)
* CB-4364 create connection trim to SSH fields

* CB-4364 create connection trim to SSL fields

* CB-4364 create connection SSH trim cleanup

* CB-4364 create main tab trim input values

* CB-4364 connection form driver properties trimmed

* CB-4364 trimmed team creation inputs

* CB-4364 trimmed identity providers inputs

* CB-4364 fix trimmed team creation inputs so it checks property type before trim

* CB-4364 trimmed server config service

* CB-4364 trimmed user form in admin settings

* CB-4364 trimmed auth form log:pass data

* CB-4364 options, ssh, ssl create connection tabs supports trim for all of the text inputs

* CB-4364 ssl tab service cleanup

* CB-4364 refactor: cleanup auth config

* CB-4364 refactor: cleanup user form info part

* CB-4364 refactor: SSH tab do not mutated state directly

* CB-4364 refactor: AuthDIalog tab do not mutated state directly

* CB-4364 refactor: connection options tab do not mutated state directly

* CB-4364 prepare config for server configuration service

* CB-4364 fix: trim driver properties if is custom ones

* CB-4364 auth, server config, userFormPart info cleanup

* CB-4364 trim password in format FormPart function

* CB-4364 connectionDriverProps cleanup

* CB-4364 fix: format user form info

* CB-4364 connectionDriverProps cleanup with keys

* CB-4364 fix: useInfoFormPart trim user id only on creation

* CB-4364 userFormInfoPart trim user id on create in format

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-03 18:57:38 +01:00
168fb9c272 CB-3952 unify validation for connection folders and rm resources (#2264)
* CB-3952 unify validation for connection folders and rm resources

* CB-3952 adjust folder name regex

* CB-3952 adjust resource file regex

* CB-3952 use trimmed value for regex test

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-03 18:13:45 +01:00
0f253672dd Cb 4461 json and xml formatting doesnt work in value panel 🔥 (#2268)
* CB-4461 fix: json and xml formats properly

* CB-4461 fix: edited cell can show its unformatted string value

* CB-4461 fix: panel value - on empty selected cell return empty string

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-01-03 17:14:18 +01:00
DenisSinelnikovandDaria Marutkina 41861efb8d CB-4331. Bruteforce protection (#2262)
* CB-4331. Bruteforce protection

* CB-4331. Bruteforce protection

* CB-4331. Update bruteforce protection

* CB-4331. Refactor after review

* CB-4331. Refactor after review

* CB-4331. Refactor after review

* CB-4331. Refactor after review

* CB-4331. Refactor after review

* CB-4331. Refactor after review

* CB-4331. Refactor after review

* CB-4331. Refactor after review

* CB-4331. Refactor after review

* CB-4331. Fix build

* CB-4331. Fixed typo

* CB-4331. Set default value without config

* CB-4331. Set default value without config

* CB-4331. Fixed AWS IAM and NTLM log in

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-01-03 13:09:18 +01:00
alex d719008944 CB-3972 safe way to get action check for the document (#2261) 2024-01-03 13:46:39 +03:00
Alexey 1330b95580 chore: update vs-code configs (#2267) 2024-01-03 12:26:23 +03:00
Alexey 027b986757 CB-3464 refactor: add formate stage for form (#2266) 2024-01-03 11:28:06 +03:00
Alexander Skoblikov 7db7049fe3 CB-4424 add function isEnvironmentVariablesAccessible into DBPApplication (#2258) 2023-12-31 19:41:08 +03:00
sergeyteleshev d6cd15c5e6 Merge pull request #2256 from dbeaver/CB-3555-view-byte-type-data-decoded
Cb 3555 view byte type data decoded
2023-12-29 17:34:24 +01:00
sergeyteleshev b66fce12e2 Merge branch 'devel' into CB-3555-view-byte-type-data-decoded 2023-12-29 17:12:04 +01:00
alexandEvgenia Bezborodova 1d5dc1468b CB-3443 add format number util function (#2263)
* CB-3443 add format number util function

* CB-3443 format number from 1k

* CB-3443 include 1k in formatting

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-29 15:52:22 +01:00
alex 5f26449f30 CB-4388 add credentials menu (#2260)
* CB-4388 add credentials menu

* CB-4388 check key for undefined
2023-12-29 13:20:31 +01:00
sergeyteleshev 0f1cac99f3 Merge pull request #2259 from dbeaver/CB-4275-inconsistent-mobile-rendering
CB-4275 feat: app height set via js
2023-12-29 12:47:09 +01:00
Daria Marutkina c5182b298f Merge branch 'devel' into CB-4275-inconsistent-mobile-rendering 2023-12-29 11:28:05 +01:00
s.teleshev 071fec6b77 CB-3555 setBinaryFileValue helper 2023-12-29 11:26:11 +01:00
s.teleshev 82fa392ff4 CB-3555 add licenses 2023-12-28 13:45:01 +01:00
s.teleshev b865948f0d Merge branch 'devel' into CB-3555-view-byte-type-data-decoded 2023-12-28 13:28:52 +01:00
s.teleshev 22c6cfc82b CB-4275 useAppHeight + set default height for the app 2023-12-28 13:19:42 +01:00
s.teleshev 0faf4f7076 CB-3555 useTextValue cleanup 2023-12-28 12:02:05 +01:00
s.teleshev 56333d524e CB-3555 fix: json columns shows correctly 2023-12-28 11:45:50 +01:00
s.teleshev 7a14f903ba CB-3555 code cleanup 2023-12-28 11:45:30 +01:00
Mikhailov Grigorii ba881a242d Merge pull request #2240 from dbeaver/devops#905-alpine-dockerfile
Devops#905 alpine dockerfile
2023-12-28 12:23:48 +04:00
s.teleshev 6784715ba4 CB-4275 feat: app height set via js 2023-12-28 00:10:32 +01:00
s.teleshev b9210072ab CB-3555 use auto format cleanup 2023-12-27 14:07:59 +01:00
s.teleshev 3557e54d1f CB-3555 hide html/xml/json tabs for blob value panel 2023-12-27 14:05:44 +01:00
s.teleshev 046a540ff8 CB-3555 feat: hex/base64 tabs shows content correctly 2023-12-27 14:03:12 +01:00
s.teleshev b5f884efcb CB-3555 fix: show base64/hex in blobs only 2023-12-27 12:53:06 +01:00
s.teleshev da0ea15f17 CB-3555 :feat adds format blob to string helpers 2023-12-27 11:18:35 +01:00
s.teleshev 5041798447 Merge branch 'devel' into CB-3555-view-byte-type-data-decoded 2023-12-27 10:40:24 +01:00
sergeyteleshev 9f092b83d0 Merge pull request #2254 from dbeaver/CB-4438-fix-localization
CB-4438 team creation text with upper cases
2023-12-27 10:38:45 +01:00
DenisSinelnikovandEvgenia Bezborodova 89df586a6e CB-4211. Disable embedded drivers in TM (#2217)
* CB-4211. Disable embedded drivers in TM

* CB-4211. Fixed checkstyle

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-26 20:09:25 +03:00
AinurandEvgenia Bezborodova 9eb32a0428 CB-4312 optimize te deps (#2251)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-26 20:07:54 +03:00
s.teleshev c671532ebf CB-3555 feat: add hex and base64 tabs 2023-12-26 14:47:56 +01:00
s.teleshev a9d1d42378 CB-3555 fix: add proper interfaces to TextValuePresentation tab has all correctly working props 2023-12-26 14:46:39 +01:00
s.teleshev e9601257a3 CB-3555 isImageValuePresentationAvailable 2023-12-26 14:13:21 +01:00
Daria Marutkina d5dcdaff15 Merge branch 'devel' into CB-4438-fix-localization 2023-12-26 09:57:26 +01:00
Greg Miller a37aae9c23 #905 Added sqlite-jdbc driver to lib 2023-12-26 02:23:51 +04:00
Evgenia Bezborodova 33205ad78a Merge branch 'devel' into devops#905-alpine-dockerfile 2023-12-25 17:34:03 +03:00
alexandEvgenia Bezborodova 94041e9b44 CB-4380 add clarification message (#2249)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-25 15:24:14 +01:00
Evgenia Bezborodova 7517bdac71 Merge pull request #2255 from dbeaver/EvgeniaBzzz-patch-1
CB-23-3-1 update.md
2023-12-25 15:21:17 +03:00
Evgenia Bezborodova b0e3deccb4 CB-23-3-1 update.md 2023-12-25 15:21:03 +03:00
Greg Miller 9ea97aa54e #905 Added packeges to Dockerfile 2023-12-25 15:02:12 +04:00
s.teleshev 0175d66c33 CB-4438 team creation text with upper cases 2023-12-25 12:02:11 +01:00
Evgenia Bezborodova 883d71e387 Merge branch 'devel' into devops#905-alpine-dockerfile 2023-12-25 12:47:14 +03:00
Alexander Skoblikov 95be398806 remove forRemoval (#2250) 2023-12-24 21:55:31 +03:00
mr-anton-t 65bbe89875 Merge branch 'devel' into devops#905-alpine-dockerfile 2023-12-22 20:43:37 +01:00
alexandmr-anton-t 982485b312 Cb 4414 plugin authentication administration css modules (#2246)
* CB-4414 refactor identity providers to css modules

* CB-4414 migrate UsersTable to css modules

* CB-4414 formatting

* CB-4414 add aria-label

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2023-12-22 15:57:33 +01:00
alexandmr-anton-t 4d7ea213d4 CB-4392 support string type in useErrorDetails (#2235)
* CB-4392 support string type in useErrorDetails

* CB-4392 remove ExportNotification controller

* CB-4392 get error type from interface

* CB-4392 check hasDetails before pass callback

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2023-12-22 15:56:01 +01:00
alexandmr-anton-t 9bfe982a4c CB-4415 migrate connection search plugin to css modules (#2247)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2023-12-22 15:54:37 +01:00
Evgenia Bezborodova a41a1308e7 Merge branch 'devel' into devops#905-alpine-dockerfile 2023-12-22 13:10:23 +03:00
Alexander SkoblikovandEvgenia Bezborodova 5cb45878c4 CB-2383 change node path format (#2207)
* CB-2383 change node path format

* CB-2383 backward compatibility fix

* CB-2383 fix frontend build

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-21 16:31:56 +03:00
alexandmr-anton-t 674569795a CB-4392 remove data export controller (#2238)
* CB-4392 remove data export controller

* CB-4412 add catch handler

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2023-12-20 19:08:47 +01:00
sergeyteleshev 6a998a030c Merge pull request #2243 from dbeaver/CB-4417-migrate-to-reshadow-user-profile-version-update-plugin-tools-plugins
Cb 4417 migrate to reshadow user profile version update plugin tools plugins
2023-12-20 17:54:46 +01:00
s.teleshev 2a448cb6a4 Merge branch 'devel' into CB-4417-migrate-to-reshadow-user-profile-version-update-plugin-tools-plugins 2023-12-20 17:01:46 +01:00
mayer fb72d2a15a dbeaver/dbeaver-devops#943 multicore-with-jenkins-params (#2237) 2023-12-20 18:52:53 +03:00
mr-anton-t 3ee3758969 Merge branch 'devel' into CB-4417-migrate-to-reshadow-user-profile-version-update-plugin-tools-plugins 2023-12-20 15:28:53 +01:00
sergeyteleshev 4c38b08b1d Merge pull request #2244 from dbeaver/CB-4416-migrate-help-log-viewer-settings-menu-settings-panel-plugins
Cb 4416 migrate help log viewer settings menu settings panel plugins
2023-12-20 15:26:38 +01:00
s.teleshev b317966e47 CB-4417 useFrom revert container 2023-12-20 14:44:51 +01:00
s.teleshev 939a6042cb CB-4417 useFrom cleanup 2023-12-20 14:36:00 +01:00
mr-anton-t 1e62fcf3e3 Merge branch 'devel' into CB-4416-migrate-help-log-viewer-settings-menu-settings-panel-plugins 2023-12-20 13:34:19 +01:00
sergeyteleshev b1614dd237 Merge pull request #2236 from dbeaver/CB-4385-migration-from-reshadow-to-module-styles
Cb 4385 migration from reshadow to module styles
2023-12-20 13:26:13 +01:00
s.teleshev eed97a392e CB-4417 revert Tabs styles 2023-12-20 11:34:23 +01:00
s.teleshev 1c68241fe0 CB-4416 :refactor remove reshadow from plugin-settings-panel 2023-12-19 17:50:43 +01:00
s.teleshev 6067c0a384 CB-4416 :refactor remove reshadow from plugin-settings-menu 2023-12-19 17:45:29 +01:00
s.teleshev 27f748da73 CB-4416 :refactor remove reshadow from plugin-help 2023-12-19 17:44:10 +01:00
s.teleshev 7a36620f11 CB-4416 :refactor Shortcut to css modules 2023-12-19 17:43:04 +01:00
s.teleshev 7e92d4b36f Merge branch 'CB-4385-migration-from-reshadow-to-module-styles' into CB-4417-migrate-to-reshadow-user-profile-version-update-plugin-tools-plugins 2023-12-19 17:26:04 +01:00
s.teleshev 58b508ceaf CB-4417 diagram footer to module styles 2023-12-19 17:00:57 +01:00
mr-anton-t a0ee9a0e4a Merge branch 'devel' into CB-4385-migration-from-reshadow-to-module-styles 2023-12-19 16:56:37 +01:00
DenisSinelnikovandEvgenia Bezborodova 7b05e9bba6 CB-4376. Upgrade logback (#2228)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-19 17:25:47 +03:00
s.teleshev b5f645a864 Merge branch 'devel' into CB-4417-migrate-to-reshadow-user-profile-version-update-plugin-tools-plugins 2023-12-19 14:09:31 +01:00
mr-anton-t 0ed32eb3e8 Merge branch 'devel' into CB-4385-migration-from-reshadow-to-module-styles 2023-12-19 13:47:47 +01:00
s.teleshev bbee98292d CB-4385 rollback IconButton styles in TableFooter 2023-12-19 13:09:57 +01:00
sergeyteleshev 46e406c9b1 Merge pull request #2195 from dbeaver/CB-4325-remove-preloaded-property-from-useResource-hook
CB-4325 useResource has no action property "preload"
2023-12-19 12:58:31 +01:00
Mikhailov Grigorii 931ede5056 Merge pull request #2241 from dbeaver/devel
Update to devel
2023-12-19 15:50:13 +04:00
Greg Miller 4a55f5a425 #905 Added alpine packeges 2023-12-19 15:30:41 +04:00
s.teleshev 96b9ebf3f6 CB-4417 ToolsPanel to module styles 2023-12-19 12:23:35 +01:00
s.teleshev dbfccc8cb9 CB-4417 version update drawer item to module styles 2023-12-19 12:04:14 +01:00
mr-anton-t ac39d453c0 Merge branch 'devel' into CB-4325-remove-preloaded-property-from-useResource-hook 2023-12-19 11:48:55 +01:00
s.teleshev 0a9e8a7a0c CB-4417 :refactor Version to module styles 2023-12-19 11:33:03 +01:00
s.teleshev bb76f01886 CB-4417 :refactor DockerUpdateInstructions to module styles 2023-12-19 11:28:05 +01:00
Greg Miller aa8189c9eb #905 fix 2023-12-19 12:10:09 +04:00
s.teleshev b68f6cce3b Merge branch 'CB-4385-migration-from-reshadow-to-module-styles' into CB-4417-migrate-to-reshadow-user-profile-version-update-plugin-tools-plugins 2023-12-18 23:30:44 +01:00
s.teleshev 16398bbec4 CB-4385: finish page has okay layout 2023-12-18 23:28:34 +01:00
s.teleshev a9bede499a Merge branch 'devel' into CB-4385-migration-from-reshadow-to-module-styles 2023-12-18 23:10:09 +01:00
s.teleshev 1f9e5e12c0 CB-4417 module styles for AuthTokenList 2023-12-18 22:32:46 +01:00
s.teleshev a74e29daf8 CB-4417 removed unused components UserAuthProvidersPanel 2023-12-18 22:24:56 +01:00
s.teleshev 4cb5828b6f CB-4417 removed unused components UserAuthProvidersTab 2023-12-18 22:23:44 +01:00
s.teleshev 2eaf272197 CB-4417 module styles for AuthProvidersList 2023-12-18 22:17:57 +01:00
s.teleshev 100341a724 CB-4417 module styles for UserProfileForm 2023-12-18 21:48:22 +01:00
s.teleshev 68bcb4500c CB-4417 module styles for UserForm 2023-12-18 21:36:02 +01:00
sergeyteleshev 6bc5bb4ae8 Merge pull request #2225 from dbeaver/CB-4386-unify-feature-naming
CB-4386 unify feature naming
2023-12-18 21:25:08 +01:00
s.teleshev e3c02ed8f5 CB-4386 fix: create form instead of finish for button 2023-12-18 21:17:54 +01:00
s.teleshev 942372fd6a Merge branch 'devel' into CB-4386-unify-feature-naming 2023-12-18 20:59:43 +01:00
s.teleshev 76106d3e25 CB-4417 _savePassword id for checkboxes 2023-12-18 18:34:13 +01:00
Greg Miller bed9c984c0 #905 Rewrite Dockerfile to Alpine image 2023-12-18 21:26:51 +04:00
7d410a6460 CB-3833. Refactor after big review, added logic for get secret contro… (#2177)
* CB-3833. Refactor after big review, added logic for get secret controller in EE/TM

* CB-3833. Refactor after big review

* CB-3833. Fixed tests

* UI init warning remove

* CB-3833 Secret controller init fix

* CB-3833 Secret controller API refactoring. Use secret manager configuration and secret policy. Performance

* CB-3833 Role secrets

* CB-3833 Errors throw fix

* CB-3833 Secret controller obtain fix

---------

Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-18 20:20:55 +03:00
s.teleshev 934092510f CB-4417 refactor: UserInfo 2023-12-18 18:00:13 +01:00
mr-anton-t ecd5c6fd2e Merge branch 'devel' into CB-4386-unify-feature-naming 2023-12-18 17:57:39 +01:00
s.teleshev 2de8ec84a5 Merge branch 'devel' into CB-4417-migrate-to-reshadow-user-profile-version-update-plugin-tools-plugins 2023-12-18 17:27:13 +01:00
sergeyteleshev 22276de1ba Merge pull request #2234 from dbeaver/CB-4393-cannot-validate-the-select-during-form-submission
CB-4393 fix: Cannot validate the select during form submission
2023-12-18 17:22:46 +01:00
s.teleshev bceefc19f4 Merge branch 'devel' into CB-4386-unify-feature-naming 2023-12-18 17:20:46 +01:00
s.teleshev ab43d60ecc CB-4385 :refactor cleanup the code 2023-12-18 16:10:47 +01:00
mr-anton-t 281c63a47d Merge branch 'devel' into CB-4385-migration-from-reshadow-to-module-styles 2023-12-18 13:21:27 +01:00
Evgenia Bezborodova 7d3fdf9643 Merge branch 'devel' into CB-4393-cannot-validate-the-select-during-form-submission 2023-12-18 15:15:58 +03:00
eb1ff96487 CB-4356 useForm does not switch tabs like insane after press enter (#2211)
* CB-4334. Added new property for ObjectPropertyInfo.

* CB-4277. Fixed typo

* CB-4335 added to gql "required" property for form inputs

* CB-4335 added required properties to all inputs of ObjectPropertyInfoForm

* CB-4335 added to useForm submit events handling

* CB-4335 create connection form uses useForm hook (first iteration)

* CB-4335 required fix for render field

* CB-4335 actions not required fix for connection form

* CB-4335 identify providers forms uses useForm

* CB-4335 connection form has scroll and access tab

* enable panels tab switch on invalid text input for SSH and SSL tabs

* CB-4335 all dynamic fields shows correctly

* СB-4335 made textarea required

* CB-4335 user authorization and change password has useForms

* CB-4335 team meta uses useForms

* CB-4335 team form actions uses react context

* CB-4335 Add ConnectionFormActionsContext to
ConnectionFormBaseActions

* CB-4335 Remove unnecessary required attribute from
AuthProviderForm component

* CB-4356 useForm does not switch tabs like insane after press enter

* CB-4335. Added required parameter to AuthProviderInfo

* CB-4335 auth provider form has required property

* Revert "CB-4356 useForm does not switch tabs like insane after press enter"

This reverts commit 6f658eb51e.

* CB-4356 tab panel does not switch on each enter press

* CB-4356 clean code in tabPanel component

* CB-4356 TabPanelValidation handler for switching tabs

* CB-4356 cleanup for useExecutor, TabState, TabPanel components

* CB-4356 switch tabs simplified (cleanup)

* CB-4356 highlight invalid fields after tab being switched

* CB-4356 added license to TabPanelValidation

* CB-4356 remove unneeded dep from useExecutor

* CB-4356 chore: refactor tabs validation

* feat(CB-4356): clear tabs validation state before start new one

* Revert "feat(CB-4356): clear tabs validation state before start new one"

This reverts commit 76b0a9c5ce.

* CB-4356 reset invalid element before form validation

* CB-4356 fix: executor collection usage

* fix: required field should not be required if it is readonly

* CB-4356 fix: forms shows child content correctly

* Revert "CB-4356 fix: forms shows child content correctly"

This reverts commit 4fd046b690.

* CB-4356 fix: TeamForm show users tab correctly

* CB-4356 fix: ssh key doesnt required if it is saved

* CB-4356 remove unique id error in console

* CB-4356 fix: error with form validation

* Revert "CB-4356 fix: error with form validation"

This reverts commit 0dce34f8b4.

---------

Co-authored-by: Denis Sinelnikov <denis.sinelnikov@dbeaver.com>
Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Aleksei Potsetsuev <wrouds@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2023-12-18 13:03:19 +01:00
s.teleshev a2dbeb8d20 Merge branch 'devel' into CB-4385-migration-from-reshadow-to-module-styles 2023-12-18 11:40:24 +01:00
serge-rider dcddb57cee 23.3.1 version bump 2023-12-18 10:31:37 +03:00
serge-rider c0f9d8d232 23.3.1 version bump 2023-12-18 10:31:08 +03:00
s.teleshev 7f06dd5632 CB-4385 :refactor license to css 2023-12-16 20:52:23 +01:00
s.teleshev 987d8aaa6f CB-4385 :refactor license to MenuBarSmallItem 2023-12-16 20:48:39 +01:00
s.teleshev 6003684277 CB-4385 :refactor PropertiesTable to module styles 2023-12-16 20:31:19 +01:00
s.teleshev 03b83ebf73 CB-4395 :refactor IconButton outer styles passed correctly 2023-12-16 19:52:03 +01:00
s.teleshev a06097b464 Merge branch 'devel' into CB-4385-migration-from-reshadow-to-module-styles 2023-12-16 19:42:31 +01:00
s.teleshev c2abce61db CB-4385 removed unneeded styles 2023-12-15 18:09:21 +01:00
alexandmr-anton-t 7e78859957 CB-4397 remove custom connection controller (#2229)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2023-12-15 17:49:19 +01:00
mr-anton-t 9c38508009 Merge branch 'devel' into CB-4325-remove-preloaded-property-from-useResource-hook 2023-12-15 15:55:58 +01:00
mr-anton-t b7670d15d2 Merge branch 'devel' into CB-4386-unify-feature-naming 2023-12-15 15:53:38 +01:00
s.teleshev cdd4ecc50c Merge branch 'devel' into CB-4385-migration-from-reshadow-to-module-styles 2023-12-15 15:51:43 +01:00
Alexeyandmr-anton-t 2f7c674ab9 CB-4332 refactor: migrate some parts of application to css-modules (#2194)
* CB-4332 refactor: migrate some parts of application to css-modules

* CB-4332 fix: aria attribute name

* CB-4332 refactor: remove ADMINISTRATION_TOOLS_PANEL_STYLES

* CB-4332 fix: inputs

* CB-4332 fix: conflicts

* СИ-4396 fix: sql editor sync

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2023-12-15 17:28:05 +03:00
s.teleshev a3366ef3fe Merge branch 'devel' into CB-4385-migration-from-reshadow-to-module-styles 2023-12-15 14:34:45 +01:00
Serge Rider 0ef0b319aa dbeaver/pro#2175 Cloud configuration load error handle (#2185) 2023-12-15 13:27:45 +03:00
s.teleshev 8b4d59079a CB-4393 fix: Combobox validation input uses inputValue as value prop 2023-12-15 11:19:21 +01:00
s.teleshev 038d38879f CB-4393 fix: adds Combobox validation input for form submission 2023-12-15 10:45:19 +01:00
Alexey 694302f41c CB-4396 fix: remove getter (#2230) 2023-12-15 11:39:56 +03:00
alexandEvgenia Bezborodova 582924335c CB-4390 increase notifications pool to 20 (#2224)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-15 11:37:24 +03:00
AlexeyandEvgenia Bezborodova d8d929ecda CB-4302 fix: always display auth methods tab (#2231)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-15 11:36:55 +03:00
s.teleshev 2818824965 Merge branch 'refactor/cb-4332/css-modules/ee-parts' into CB-4385-migration-from-reshadow-to-module-styles 2023-12-15 09:36:00 +01:00
AlexeyandDaria Marutkina 3050cd8b45 CB-2196 chore: update react-data-grid (#2199)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2023-12-15 11:35:41 +03:00
s.teleshev a2b7b6701d Merge branch 'devel' into CB-4385-migration-from-reshadow-to-module-styles 2023-12-15 09:29:35 +01:00
s.teleshev 128c3c310b CB-4385 refactor: removed reshadow ADMINISTRATION_TOOLS_PANEL_STYLES 2023-12-15 09:26:50 +01:00
mr-anton-t bd2d518eed Merge branch 'devel' into CB-4386-unify-feature-naming 2023-12-15 01:59:51 +01:00
mr-anton-t ebe24f7e97 Merge branch 'devel' into refactor/cb-4332/css-modules/ee-parts 2023-12-14 20:00:40 +01:00
s.teleshev 3c3d2f9b35 CB-4385 refactor: finish page to css modules 2023-12-14 18:02:18 +01:00
serge-rider 50a898b75a UI init warning remove 2023-12-14 19:36:20 +03:00
mr-anton-t db83920588 Merge branch 'devel' into refactor/cb-4332/css-modules/ee-parts 2023-12-14 17:35:49 +01:00
s.teleshev 4f8b2e1494 Merge branch 'devel' into CB-4385-migration-from-reshadow-to-module-styles 2023-12-14 17:30:11 +01:00
Evgenia Bezborodova db1ea4451e Merge branch 'devel' into CB-4386-unify-feature-naming 2023-12-14 19:14:23 +03:00
0f00c234d3 CB-4058 errors in console (#2180)
* CB-4058 invalid authorization - invalid creds (no error)

* CB-4058 table error cause no error when ref is updated while render

* CB-4058 removed from console session expire logs after session being expired

* Revert "CB-4058 removed from console session expire logs after session being expired"

This reverts commit a506f4cbe7.

* CB-4058 session errors fix

* CB-4058 remove error from userInfo

* CB-4058 remove redundant code

* CB-4059 useAutoLoad session error fixed

* CB-4059 clean code after refactor

* CB-4059 clean code after refactor [2]

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Alexey <wrouds@gmail.com>
2023-12-14 18:31:46 +03:00
2fc9f36ddb CB-2755 add lock icon on readonly sql editor tab scripts (#2181)
* CB-2755 add lock icon on readonly sql editor tab scripts

* CB-2755 readonly localization in core-localization module

* CB-2755 lock is showed instead of unresolved mark in read-only scripts

* CB-2755 lock and unsaved mark positioning

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2023-12-14 18:29:07 +03:00
63186a17c4 CB-4349 remove templates controller (#2215)
* CB-4349 remove templates controller

* CB-4349 review fixes

* CB-4349 review fixes

---------

Co-authored-by: Alexey <wrouds@gmail.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2023-12-14 18:24:27 +03:00
AlexeyandEvgenia Bezborodova 2cbdba177a CB-3696 feat: codemirror hyperlinks extension (#2216)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-14 18:23:39 +03:00
AinurandEvgenia Bezborodova 3fd5f4d011 CB-4336 remove derby driver (#2214)
* CB-4336 update derby driver

* CB-4336 remove derby driver

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-14 17:43:38 +03:00
s.teleshev 35901cbf15 CB-4386 chore: added connections_connection_test_tooltip and fixed button name 2023-12-14 15:34:23 +01:00
Evgenia Bezborodova 69aaaf00b7 Merge branch 'devel' into CB-4386-unify-feature-naming 2023-12-14 17:14:50 +03:00
Aleksei Potsetsuev f61ac47c1c CB-4332 fix: conflicts 2023-12-14 21:22:04 +08:00
Aleksei Potsetsuev 13a0fc258c CB-4332 fix: inputs 2023-12-14 20:47:12 +08:00
mr-anton-t 072646c9e0 Merge branch 'devel' into refactor/cb-4332/css-modules/ee-parts 2023-12-14 13:43:23 +01:00
807365f42c CB-4306 update ce deps (#2206)
* CB-4306 update ce deps

* CB-4306 update yarn lock

* CB-4306 revert quadtree-ts

* CB-4306 lock version

* CB-4306 pass missed globals to the vm context

* CB-4306 revert prettier version

* CB-4306 add types

* CB-4306 fix: msw types

* CB-4306 refactor: remove reshadow types declaration

---------

Co-authored-by: Alexey <wrouds@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2023-12-14 15:25:10 +03:00
s.teleshev 30c450efb7 CB-4386 chore: keep the key ui_processing_create 2023-12-14 12:22:29 +01:00
s.teleshev d20cda4398 Revert "CB-4386 chore: ui_processing_create for all forms according to dbeaver"
This reverts commit 2bb259379a.
2023-12-14 12:17:35 +01:00
Aleksei Potsetsuev d4b9bdd3c2 Merge remote-tracking branch 'origin/devel' into refactor/cb-4332/css-modules/ee-parts 2023-12-14 19:05:23 +08:00
Serge Rider 91bec0b813 dbeaver/pro#2176 Localhost IP resolve (#2176)
* dbeaver/pro#2176 Localhost IP resolve

* dbeaver/pro#2176 Localhost name resolve
2023-12-14 14:04:19 +03:00
s.teleshev 2bb259379a CB-4386 chore: ui_processing_create for all forms according to dbeaver 2023-12-14 11:52:57 +01:00
Aleksei Potsetsuev da0055fb75 Merge remote-tracking branch 'origin/devel' into refactor/cb-4332/css-modules/ee-parts 2023-12-14 18:41:25 +08:00
s.teleshev 17f9b70dc9 CB-4386 chore: customConnection_main naming 2023-12-14 11:18:24 +01:00
s.teleshev 215b557273 CB-4386 chore: fix non en & ru locales 2023-12-14 11:16:37 +01:00
s.teleshev 9ccf56f7d4 CB-4386 chore: "show scripts" fix according to dbeaver 2023-12-14 11:01:23 +01:00
s.teleshev e5d6ad121d CB-4386 chore: ui_processing_finish for all forms according to dbeaver 2023-12-14 10:58:14 +01:00
AlexeyandEvgenia Bezborodova 5779100b9a CB-4348 fix: parse sql script (#2212)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-14 12:57:54 +03:00
alexandmr-anton-t 6c456c8a63 CB-4297 bump node version (#2204)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2023-12-14 12:56:36 +03:00
Serge Rider 13888efe95 dbeaver/pro#2181 DI + platform initialization refactoring (#2190)
* dbeaver/pro#2181 DI + platform initialization refactoring

* dbeaver/pro#2181 Tests headless environment
2023-12-14 12:55:12 +03:00
s.teleshev 1493f18e0e CB-4386 chore: connection translations according to dbeaver 2023-12-13 22:48:23 +01:00
s.teleshev 3e2530ec55 CB-4386 chore: replace customConnection_options translations 2023-12-13 22:38:59 +01:00
s.teleshev 985cc8078b CB-4386 chore: replace revert to cancel 2023-12-13 21:29:58 +01:00
s.teleshev a8df087958 CB-4386 chore: features naming according to dbeaver 2023-12-13 21:25:05 +01:00
mayer 9e2a6ce35a Devops#823 build servers and front end separately (#2163)
* dbeaver/dbeaver-devops#823 separated back front

* dbeaver/dbeaver-devops#823 updated SAMPLE_DATABASE_PATH var definition

* dbeaver/dbeaver-devops#823 removed unbound variable exception
2023-12-13 17:37:35 +01:00
Ainur a68737f329 CB-4383 use jakarta 5 fix (#2223)
* CB-4383 use jakarta 5

* CB-4383 use jakarta servlet from orbit
2023-12-13 18:29:16 +03:00
5117dcc106 CB-4266 change notification display (#2184)
* CB-4266 notifications fixed size

* CB-4266 action snack bar fixed size

* CB-4266 snack bar fixed size

* CB-4266 export notification fixed size

* CB-4266 DataSynchronizationNotification fixed size

* CB-4266 ProcessSnackbar fixed size

* Revert "CB-4266 ProcessSnackbar fixed size"

This reverts commit 6a780e387f.

* CB-4266 all notifications container has 172px height

* CB-4266 revert styles

* CB-4266 use divs in notifications after removing of reshadow styles

* CB-4266 add license

* CB-4266 show only 1 notification visible

* CB-4266 export notification uses pre tag

* Revert "CB-4266 show only 1 notification visible"

This reverts commit 5e4b237abd.

* CB-4266 display notifications in fixed height window one by one

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-13 17:38:07 +03:00
Ainur 8d47238938 CB-4383 use jakarta 5 (#2222) 2023-12-13 17:21:20 +03:00
s.teleshev ee1433af49 Merge branch 'devel' into CB-4325-remove-preloaded-property-from-useResource-hook 2023-12-13 14:03:02 +01:00
Alexey 1b5a5ac5fa Merge branch 'devel' into refactor/cb-4332/css-modules/ee-parts 2023-12-13 15:31:42 +03:00
AlexeyandEvgenia Bezborodova 60c320708a CB-4302 refactor: reorganize auth methods (#2208)
* CB-4302 refactor: reorganize auth methods

* CB-4302 fix: type casting

* CB-4302 fix: add overflow for users providers

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-13 15:27:26 +03:00
Ainur 272690b8c1 CB-4276 migrate to jakarta servlet api (#2213) 2023-12-13 14:53:57 +03:00
mr-anton-t 77c493d5fa Merge branch 'devel' into CB-4325-remove-preloaded-property-from-useResource-hook 2023-12-13 11:52:50 +01:00
Aleksei Potsetsuev 571830f1ae CB-4332 refactor: remove ADMINISTRATION_TOOLS_PANEL_STYLES 2023-12-13 16:16:18 +08:00
Aleksei Potsetsuev 9522b176f5 Merge remote-tracking branch 'origin/devel' into refactor/cb-4332/css-modules/ee-parts 2023-12-13 15:46:19 +08:00
9a69f4e660 Cb 3963 migrate core view to css modules (#2192)
* CB-3963 error message reshadow refactor

* CB-3963 remove extra reshadow use from ItemListSearch

* CB-3963 remove reshadow from TopAppBar

* CB-3963 remove unused LoadingScreen component

* CB-3963 removed reshadow from VersionUpdate

* CB-3963 removed reshadow from VersionSelector

* CB-3963 removed reshadow from renderLayout

* CB-3963 removed reshadow from AuthenticationProvider

* CB-3963 removed reshadow from VersionInfo

* CB-3963 removed reshadow from TableItemSelect

* CB-3963 removed reshadow from CaptureView

* CB-3963 removed reshadow from ConnectionList

* CB-3963 removed reshadow from WizzardStepper

* CB-3963 removed reshadow from ConfigurationWizardTittle

* Revert "CB-3963 removed reshadow from AuthenticationProvider"

This reverts commit d5828c2689.

* CB.3963 fix checkboxes margin in table items

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2023-12-13 10:45:31 +03:00
s.teleshev a62ac973dc Merge branch 'devel' into CB-4385-migration-from-reshadow-to-module-styles 2023-12-12 16:23:10 +01:00
e9081598e3 CB-3990 removed big version of logo (#2186)
Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2023-12-12 18:12:24 +03:00
923dadee86 CB-3961 removed ADMINISTRATION_TOOLS_PANEL_STYLES from core-administr… (#2171)
* CB-3961 removed ADMINISTRATION_TOOLS_PANEL_STYLES from core-administration

* Revert "CB-3961 removed ADMINISTRATION_TOOLS_PANEL_STYLES from core-administration"

This reverts commit 50bb0160c8.

* CB-3961 removed reshadow from core-administration

* CB-3961 styles for table has gray color

* CB-3961 ToolsPanel has 2 modes: surface and secondary

* CB-3961 primary/secondary toolsPanel styles fix

* CB-3961 table footer height is 30px

* CB-3961 table footer height is initial

* CB-3961 no border for footer table + min-height 32 px as it was

* CB-3961 no border for footer in table

* CB-3961 remove EE border bottom at ToolsPanel

* CB-3961 remove EE border bottom at ToolsPanel

---------

Co-authored-by: s.teleshev <s.teleshev@mu.se>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2023-12-12 18:11:59 +03:00
s.teleshev 6ed92dab14 refactor(CB-4385): removed reshadow from IconButton 2023-12-12 13:15:26 +01:00
s.teleshev e6d3458855 Merge branch 'refactor/cb-4332/css-modules/ee-parts' into CB-4385-migration-from-reshadow-to-module-styles 2023-12-12 12:54:49 +01:00
s.teleshev d19dfd0c8f Merge branch 'CB-3963-migrate-core-view-to-css-modules' into CB-4385-migration-from-reshadow-to-module-styles 2023-12-12 12:54:26 +01:00
s.teleshev 583d342c8b Merge branch 'devel' into CB-4325-remove-preloaded-property-from-useResource-hook 2023-12-12 12:00:35 +01:00
Aleksei Potsetsuev ef93be4842 CB-4332 fix: aria attribute name 2023-12-12 17:33:14 +08:00
mr-anton-t a46c5fc974 Merge branch 'devel' into refactor/cb-4332/css-modules/ee-parts 2023-12-11 12:26:26 +01:00
serge-rider 21a9e78381 Code style 2023-12-09 17:19:08 +03:00
mr-anton-t a5b9041cf0 Merge branch 'devel' into refactor/cb-4332/css-modules/ee-parts 2023-12-08 17:20:36 +01:00
mr-anton-t b561a8f707 Merge branch 'devel' into CB-3963-migrate-core-view-to-css-modules 2023-12-08 16:45:45 +01:00
serge-rider 43f50f2ff3 dbeaver/pro#2176 Localhost IP resolve fix 2023-12-08 13:35:52 +03:00
serge-rider 96a163c50e dbeaver/pro#2176 Localhost domain name resolve fix 2023-12-08 07:47:35 +03:00
Ainurandnaumov 36061a03c4 CB-4314 add test locale (#2209)
Co-authored-by: naumov <iamemptyhuh@gmail.com>
2023-12-07 14:26:34 +03:00
serge-rider a9e727a9d2 Merge remote-tracking branch 'origin/devel' into devel 2023-12-07 10:08:09 +03:00
serge-rider 1220e4ba38 Logging and code style 2023-12-07 10:07:41 +03:00
alex f58f2a3c90 Update frontend.yml (#2205) 2023-12-06 20:58:33 +01:00
AlexeyandDaria Marutkina bb3ee1d822 CB-4317 fix: require authentication to load connection origin details (#2189)
* CB-4317 fix: require authentication to load connection origin details

* CB-4317 fix: ensure user loaded and up to date

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2023-12-06 20:36:05 +03:00
s.teleshev ca378a4e53 CB.3963 fix checkboxes margin in table items 2023-12-06 13:37:10 +01:00
mr-anton-t 9b728aec67 Merge branch 'devel' into CB-3963-migrate-core-view-to-css-modules 2023-12-06 12:29:07 +01:00
Alexeyandmr-anton-t b83cd0d883 CB-4060 feat: remove data-testid attribute (#2166)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2023-12-06 09:54:51 +03:00
mr-anton-t ad9cebdaf9 Merge branch 'devel' into CB-3963-migrate-core-view-to-css-modules 2023-12-06 00:22:48 +01:00
Ainur 669ad9cb66 CB-4328 get updated rows info only using key identifier attributes (#2193)
* CB-4328 get updated rows info only using key identifier attributes

* CB-4328 do not refresh row for nosql db
2023-12-05 19:57:21 +03:00
s.teleshev 5aa474a000 CB-4325 removed console log 2023-12-05 09:57:48 +01:00
s.teleshev 53ea6dce4f CB-4325 useResource has no action property "preload" 2023-12-04 18:48:38 +01:00
Aleksei Potsetsuev e899e49cb6 CB-4332 refactor: migrate some parts of application to css-modules 2023-12-05 00:13:22 +08:00
s.teleshev fc518b2ef5 Revert "CB-3963 removed reshadow from AuthenticationProvider"
This reverts commit d5828c2689.
2023-12-04 13:26:00 +01:00
s.teleshev a09c63d639 CB-3963 removed reshadow from ConfigurationWizardTittle 2023-12-04 13:24:22 +01:00
s.teleshev f0e5e639dc CB-3963 removed reshadow from WizzardStepper 2023-12-04 13:22:01 +01:00
s.teleshev df585f1852 Merge branch 'devel' into CB-3963-migrate-core-view-to-css-modules 2023-12-04 13:01:21 +01:00
s.teleshev 6953e6fa9a CB-3963 removed reshadow from ConnectionList 2023-12-04 12:59:43 +01:00
s.teleshev b4d31d396d CB-3963 removed reshadow from CaptureView 2023-12-04 12:53:34 +01:00
Daria Marutkina 081dcfcda5 Merge pull request #2191 from dbeaver/dariamarutkina-patch-1
CB_2330 chore: update README
2023-12-04 12:52:51 +01:00
Daria Marutkina b710f55684 CB_2330 chore: update README 2023-12-04 12:52:11 +01:00
s.teleshev da688df4f9 CB-3963 removed reshadow from TableItemSelect 2023-12-02 14:24:45 +01:00
s.teleshev c8d29fe57f CB-3963 removed reshadow from VersionInfo 2023-12-01 19:07:28 +01:00
s.teleshev d5828c2689 CB-3963 removed reshadow from AuthenticationProvider 2023-12-01 18:36:05 +01:00
s.teleshev bcbfd7e2df CB-3963 removed reshadow from renderLayout 2023-12-01 18:26:48 +01:00
s.teleshev 8ba210bd81 CB-3963 removed reshadow from VersionSelector 2023-12-01 15:45:19 +01:00
s.teleshev 8293cd4515 CB-3963 removed reshadow from VersionUpdate 2023-12-01 15:24:12 +01:00
s.teleshev e4e1e179c0 CB-3963 remove unused LoadingScreen component 2023-12-01 14:15:35 +01:00
s.teleshev 1c0dbb15f6 CB-3963 remove reshadow from TopAppBar 2023-12-01 14:12:16 +01:00
s.teleshev 0a04d60512 CB-3963 remove extra reshadow use from ItemListSearch 2023-12-01 14:09:50 +01:00
s.teleshev edfd4ad063 CB-3963 error message reshadow refactor 2023-12-01 13:36:06 +01:00
3334 changed files with 41913 additions and 25737 deletions
+1 -1
View File
@@ -25,7 +25,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: "18"
node-version: "20"
- name: Get yarn cache directory path
id: yarn-cache-dir-path
+1
View File
@@ -40,6 +40,7 @@ server/test/io.cloudbeaver.test.platform/workspace/.data/
.classpath
.settings/
workspace-dev-ce/
deploy/cloudbeaver
server/**/target
apps/**/target
+14 -21
View File
@@ -7,31 +7,25 @@
"name": "Chrome",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}/..",
"outFiles": [
"${workspaceFolder}/../cloudbeaver/packages/**/dist/**/*.{js,jsx}"
],
"smartStep": true,
"sourceMaps": true,
"sourceMapPathOverrides": {
"webpack:///*": "${workspaceFolder}/../*"
},
"skipFiles": [
"<node_internals>/**",
"**/node_modules/**",
"${workspaceFolder}/webapp/**/node_modules/**/*.js",
"${workspaceFolder}/webapp/**/dist/**/*.js"
]
"disableNetworkCache": true,
"skipFiles": ["<node_internals>/**", "**/node_modules/**"]
},
{
"type": "java",
"name": "CloudBeaver CE",
"cwd": "${workspaceFolder}/../opt/cbce",
"cwd": "${workspaceFolder}/workspace-dev-ce",
"request": "launch",
"mainClass": "org.eclipse.equinox.launcher.Main",
"mainClass": "org.jkiss.dbeaver.launcher.DBeaverLauncher",
"windows": {
"type": "java",
"name": "CloudBeaver CE",
"request": "launch",
"mainClass": "org.eclipse.equinox.launcher.Main",
"classPaths": [
"${workspaceFolder}/../eclipse/eclipse/plugins/org.eclipse.equinox.launcher_1.6.500.v20230717-2134.jar"
],
"mainClass": "org.jkiss.dbeaver.launcher.DBeaverLauncher",
"args": [
"-product",
"io.cloudbeaver.product.ce.product",
@@ -63,10 +57,7 @@
"type": "java",
"name": "CloudBeaver CE",
"request": "launch",
"mainClass": "org.eclipse.equinox.launcher.Main",
"classPaths": [
"${workspaceFolder}/../eclipse/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.equinox.launcher_1.6.500.v20230717-2134.jar"
],
"mainClass": "org.jkiss.dbeaver.launcher.DBeaverLauncher",
"args": [
"-product",
"io.cloudbeaver.product.ce.product",
@@ -81,8 +72,10 @@
"-arch",
"aarch64",
"-nl",
"en_US",
"-showsplash"
"en",
"-showsplash",
"-web-config",
"conf/cloudbeaver.conf"
],
"vmArgs": [
"-XX:+IgnoreUnrecognizedVMOptions",
+3 -5
View File
@@ -1,17 +1,15 @@
{
"license": {
"scope": "typescript,typescriptreact,javascript,javascriptreact",
"scope": "typescript,typescriptreact,javascript,javascriptreact,css,scss",
"prefix": "license",
"body": [
"/*",
" * CloudBeaver - Cloud Database Manager",
" * Copyright (C) 2020-2023 DBeaver Corp and others",
" * Copyright (C) 2020-2024 DBeaver Corp and others",
" *",
" * Licensed under the Apache License, Version 2.0.",
" * you may not use this file except in compliance with the License.",
" */",
"",
""
" */"
]
}
}
+50
View File
@@ -33,6 +33,35 @@
"cwd": "${workspaceFolder}/webapp/packages/product-default"
}
},
{
"label": "Generate dev proprties for CBCE",
"type": "shell",
"command": "mvn",
"osx": {
"args": [
"package",
"-q",
"exec:java",
"-Dexec.args= -eclipse.version ${eclipse-version} -config ${workspaceFolder}/../idea-workspace-dbeaver/rcp-gen.properties -productFile ${workspaceFolder}/server/product/web-server/CloudbeaverServer.product -projectsFolder ${workspaceFolder}/../ -eclipse ${workspaceFolder}/../eclipse/Eclipse.app/Contents/Eclipse -output ${workspaceFolder}/../eclipse/workspace/.metadata/.plugins/org.eclipse.pde.core/CloudbeaverServer.product"
]
},
"windows": {
"args": [
"package",
"-q",
"exec:java",
"-Dexec.args= -eclipse.version ${eclipse-version} -config ${workspaceFolder}/../idea-workspace-dbeaver/rcp-gen.properties -productFile ${workspaceFolder}/server/product/web-server/CloudbeaverServer.product -projectsFolder ${workspaceFolder}/../ -eclipse ${workspaceFolder}/../eclipse/eclipse -output ${workspaceFolder}/../eclipse/workspace/.metadata/.plugins/org.eclipse.pde.core/CloudbeaverServer.product"
]
},
"options": {
"cwd": "${workspaceFolder}/../idea-rcp-launch-config-generator"
},
"presentation": {
"reveal": "silent",
"close": true,
"clear": false
}
},
{
"label": "Build CE",
"type": "shell",
@@ -50,6 +79,19 @@
"isDefault": true
}
},
{
"label": "Run Backend CE",
"type": "shell",
"windows": {
"command": "./run-server.bat"
},
"osx": {
"command": "./run-server.sh"
},
"options": {
"cwd": "${workspaceFolder}/deploy/cloudbeaver"
}
},
{
"label": "Yarn Install",
"type": "shell",
@@ -60,6 +102,14 @@
"close": true,
"clear": false
}
},
{
"label": "Update TS references CE",
"type": "shell",
"command": "yarn lerna run update-ts-references --stream",
"options": {
"cwd": "${workspaceFolder}/webapp"
}
}
],
"inputs": [
+49 -15
View File
@@ -22,23 +22,57 @@ You can see live demo of CloudBeaver here: https://demo.cloudbeaver.io
## Changelog
### CloudBeaver 23.2.5 - 2023-11-20
- Added the ability to count the total number of entries in the table;
- Administrators have gained the ability to permanently delete users and their data;
- Different bug fixes and enhancements have been made.
### CloudBeaver 23.2.4 - 2023-11-06
### 24.0.3. 2024-04-22
- Unauthorized access vulnerability was fixed;
- Updated the version of the Clickhouse driver to 0.4.6;
- Support for using custom delimiters has been added in MySQL;
- Added the ability for users to configure personal settings for the interface, SQL editor, and data viewer through the settings panel;
- Added the ability to backup of the internal database before schema migration (for H2);
- Different bug fixes and enhancements have been made.
### 24.0.2. 2024-04-08
- Added the ability to import data to the database from CSV file;
- Implemented support for utilizing environment variables within connection configurations;
- The ability to select a case for column names has been added to CSV export;
- A new Apache Kyuubi driver has been added;
- Trino driver has been updated to version 438;
- Clickhouse driver has been updated to version 0.6.0-patch2;
- Have enhanced security of H2 connection;
- Different bug fixes and enhancements have been made.
### 24.0.1. 2024-03-25
- Added support for two modes for committing changes to the database:
- Auto-commit transfers all changes that you make immediately to the database;
- Manual commit requires your confirmation before committing a change to the database or rolling it back.
- Different bug fixes and enhancements have been made.
### 24.0.0. 2024-03-04
- Changes since 23.3.0:
### Old CloudBeaver releases
You can find information about earlier releases on the CloudBeaver wiki https://github.com/dbeaver/cloudbeaver/wiki/Releases.
- Main updates:
- Have enhanced security for unauthorised access;
- Have added a password policy for the local authorization. Password parameters can be set in the configuration file;
- Have added validation for mandatory fields in all forms to create and edit entities;
- Have added an ability to edit the default preferences of the following parts: interface, tools and data viewer in the settings panel in the administrative part;
- Performance:
- Have improved the performance of the server.
- Administration:
- Have added the ability to configure reverse proxy header name and redirect URL at logout. Now the administrator can configure all settings. The delimiter symbol for the reverse proxy team headers is configurable;
- Preferences:
- Have added the ability in the admin panel to customise copying in the Tables and Values panel for all users except the administrator;
- Have added the ability to disable alias autocomplete for all users.
- Access Management:
- A default user group was added to the product. This group includes all users which could not be deleted.
- Connections:
- The 'Keep alive' option has been added to the connection settings to keep the connection active even in case of inactivity.
- Data Editor:
- Have added the ability to view decoded binary-type data in the Value panel;
- Text wrap is activated by default for texts and BLOBs in the Values panel for better visibility. The user can switch to the one-line mode using a button on the toolbar;
- Have added the ability to display full text for a string data type in the Value panel;
- Have added the ability to display the OpenStreetMap layer with the coordinate system ESPG 4326.
- Resource management:
- Read-only scripts now have a padlock icon.
- Databases:
- The DuckDB driver has been added;
- Updated PostgreSQL driver to 42.5.2;
- ClickHouse Legacy driver has been removed to prevent potential vulnerability issues;
- Updated MariaDB driver to version 3.3.2.
- Different bug fixes and enhancements have been made.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
+2 -2
View File
@@ -2,13 +2,13 @@
teams: [
{
subjectId: "admin",
name: "Admin",
teamName: "Admin",
description: "Administrative access. Has all permissions.",
permissions: [ "admin" ]
},
{
subjectId: "user",
name: "User",
teamName: "User",
description: "All users, including anonymous.",
permissions: [ ]
}
-31
View File
@@ -1,31 +0,0 @@
// Product configuration. Customized web application behavior
// It is in JSONC format
{
// Global properties
core: {
// User defaults
user: {
defaultTheme: "light",
defaultLanguage: "en"
},
app: {
// Log viewer config
logViewer: {
refreshTimeout: 3000,
logBatchSize: 1000,
maxLogRecords: 2000,
maxFailedRequests: 3
}
}
},
// Notifications config
core_events: {
notificationsPool: 5
},
plugin_data_spreadsheet_new: {
hidden: false
},
plugin_data_export: {
disabled: false
}
}
@@ -11,7 +11,21 @@
rootURI: "/",
serviceURI: "/api/",
productConfiguration: "conf/product.conf",
productSettings: {
# Global properties
core.theming.theme: 'light',
core.localization.localization: 'en',
plugin.sql-editor.autoSave: true,
plugin.sql-editor.disabled: false,
# max size of the file that can be uploaded to the editor (in kilobytes)
plugin.sql-editor.maxFileSize: 10240,
plugin.log-viewer.disabled: false,
plugin.log-viewer.logBatchSize: 1000,
plugin.log-viewer.maxFailedRequests: 3,
plugin.log-viewer.maxLogRecords: 2000,
plugin.log-viewer.refreshTimeout: 3000,
sql.proposals.insert.table.alias: PLAIN
},
expireSessionAfterPeriod: 1800000,
@@ -19,8 +33,21 @@
enableSecurityManager: false,
sm: {
enableBruteForceProtection: "${CLOUDBEAVER_BRUTE_FORCE_PROTECTION_ENABLED:true}",
maxFailedLogin: "${CLOUDBEAVER_MAX_FAILED_LOGINS:10}",
minimumLoginTimeout: "${CLOUDBEAVER_MINIMUM_LOGIN_TIMEOUT:1}",
blockLoginPeriod: "${CLOUDBEAVER_BLOCK_PERIOD:300}",
passwordPolicy: {
minLength: "${CLOUDBEAVER_POLICY_MIN_LENGTH:8}",
requireMixedCase: "${CLOUDBEAVER_POLICY_REQUIRE_MIXED_CASE:true}",
minNumberCount: "${CLOUDBEAVER_POLICY_MIN_NUMBER_COUNT:1}",
minSymbolCount: "${CLOUDBEAVER_POLICY_MIN_SYMBOL_COUNT:0}"
}
},
database: {
driver="h2_embedded_v2",
driver: "h2_embedded_v2",
url: "jdbc:h2:${workspace}/.data/cb.h2v2.dat",
initialDataConfiguration: "conf/initial-data.conf",
pool: {
@@ -28,16 +55,19 @@
maxIdleConnections: 10,
maxConnections: 100,
validationQuery: "SELECT 1"
}
},
backupEnabled: "${CLOUDBEAVER_DB_BACKUP_ENABLED:true}"
}
},
app: {
anonymousAccessEnabled: true,
anonymousUserRole: "user",
defaultUserTeam: "user",
grantConnectionsAccessToAnonymousTeam: false,
supportsCustomConnections: false,
showReadOnlyConnectionInfo: false,
systemVariablesResolvingEnabled: "${CLOUDBEAVER_SYSTEM_VARIABLES_RESOLVING_ENABLED:false}",
forwardProxy: false,
@@ -9,7 +9,21 @@
rootURI: "/",
serviceURI: "/api/",
productConfiguration: "conf/product.conf",
productSettings: {
# Global properties
core.theming.theme: 'light',
core.localization.localization: 'en',
plugin.sql-editor.autoSave: true,
plugin.sql-editor.disabled: false,
# max size of the file that can be uploaded to the editor (in kilobytes)
plugin.sql-editor.maxFileSize: 10240,
plugin.log-viewer.disabled: false,
plugin.log-viewer.logBatchSize: 1000,
plugin.log-viewer.maxFailedRequests: 3,
plugin.log-viewer.maxLogRecords: 2000,
plugin.log-viewer.refreshTimeout: 3000,
sql.proposals.insert.table.alias: PLAIN
},
expireSessionAfterPeriod: 1800000,
@@ -18,7 +32,7 @@
enableSecurityManager: false,
database: {
driver="h2_embedded_v2",
driver:"h2_embedded_v2",
url: "jdbc:h2:${workspace}/.data/cb.h2v2.dat",
initialDataConfiguration: "conf/initial-data.conf",
pool: {
@@ -26,6 +40,19 @@
maxIdleConnections: 10,
maxConnections: 100,
validationQuery: "SELECT 1"
},
backupEnabled: "${CLOUDBEAVER_DB_BACKUP_ENABLED:true}"
},
sm: {
enableBruteForceProtection: "${CLOUDBEAVER_BRUTE_FORCE_PROTECTION_ENABLED:true}",
maxFailedLogin: "${CLOUDBEAVER_MAX_FAILED_LOGINS:10}",
minimumLoginTimeout: "${CLOUDBEAVER_MINIMUM_LOGIN_TIMEOUT:1}",
blockLoginPeriod: "${CLOUDBEAVER_BLOCK_PERIOD:300}",
passwordPolicy: {
minLength: "${CLOUDBEAVER_POLICY_MIN_LENGTH:8}",
requireMixedCase: "${CLOUDBEAVER_POLICY_REQUIRE_MIXED_CASE:true}",
minNumberCount: "${CLOUDBEAVER_POLICY_MIN_NUMBER_COUNT:1}",
minSymbolCount: "${CLOUDBEAVER_POLICY_MIN_SYMBOL_COUNT:0}"
}
}
@@ -36,6 +63,7 @@
grantConnectionsAccessToAnonymousTeam: false,
supportsCustomConnections: false,
showReadOnlyConnectionInfo: false,
systemVariablesResolvingEnabled: "${CLOUDBEAVER_SYSTEM_VARIABLES_RESOLVING_ENABLED:false}",
forwardProxy: false,
+63
View File
@@ -0,0 +1,63 @@
#!/bin/bash
set -Eeo pipefail
set +u
# #command line arguments
# CONFIGURATION_PATH=${1-"../config/sample-databases/DefaultConfiguration"}
# SAMPLE_DATABASE_PATH=${2-""}
# echo $CONFIGURATION_PATH
# echo $SAMPLE_DATABASE_PATH
echo "Clone and build Cloudbeaver"
rm -rf ./drivers
rm -rf ./cloudbeaver
mkdir ./cloudbeaver
mkdir ./cloudbeaver/server
mkdir ./cloudbeaver/conf
mkdir ./cloudbeaver/workspace
mkdir ./cloudbeaver/web
echo "Pull cloudbeaver platform"
cd ../..
echo "Pull dbeaver platform"
[ ! -d dbeaver ] && git clone --depth 1 https://github.com/dbeaver/dbeaver.git
[ ! -d dbeaver-common ] && git clone --depth 1 https://github.com/dbeaver/dbeaver-common.git
cd cloudbeaver/deploy
echo "Build CloudBeaver server"
cd ../server/product/aggregate
mvn clean verify $MAVEN_COMMON_OPTS -Dheadless-platform
if [[ "$?" -ne 0 ]] ; then
echo 'Could not perform package'; exit $rc
fi
cd ../../../deploy
echo "Copy server packages"
cp -rp ../server/product/web-server/target/products/io.cloudbeaver.product/all/all/all/* ./cloudbeaver/server
cp -p ./scripts/* ./cloudbeaver
mkdir cloudbeaver/samples
if [[ -z $SAMPLE_DATABASE_PATH ]]; then
SAMPLE_DATABASE_PATH=""
else
mkdir cloudbeaver/samples/db
cp -rp "${SAMPLE_DATABASE_PATH}" cloudbeaver/samples/
fi
if [[ -z "$CONFIGURATION_PATH" ]]; then
CONFIGURATION_PATH="../config/sample-databases/DefaultConfiguration"
fi
cp -rp ../config/core/* cloudbeaver/conf
cp -rp "${CONFIGURATION_PATH}"/GlobalConfiguration/.dbeaver/data-sources.json cloudbeaver/conf/initial-data-sources.conf
cp -p "${CONFIGURATION_PATH}"/*.conf cloudbeaver/conf/
mv drivers cloudbeaver
echo "End of backend build"
+21
View File
@@ -0,0 +1,21 @@
#!/bin/bash
set -Eeuo pipefail
echo "Build static content"
cd ../../cloudbeaver/webapp
yarn
yarn lerna run bootstrap
yarn lerna run bundle --no-bail --stream --scope=@cloudbeaver/product-default #-- -- --env source-map
if [[ "$?" -ne 0 ]] ; then
echo 'Application build failed'; exit $rc
fi
cd ../deploy
echo "Copy static content"
cp -rp ../webapp/packages/product-default/lib/* cloudbeaver/web
echo "Cloudbeaver is ready. Run run-server.sh in cloudbeaver folder to start the server."
+9 -1
View File
@@ -1 +1,9 @@
./build.sh '../config/sample-databases/SQLiteConfiguration' '../config/sample-databases/db'
#!/bin/bash
set -Eeuo pipefail
#command line arguments
CONFIGURATION_PATH='../config/sample-databases/SQLiteConfiguration'
SAMPLE_DATABASE_PATH='../config/sample-databases/db'
source build-backend.sh
source build-frontend.sh
+1
View File
@@ -24,6 +24,7 @@ cd ..\..
echo Pull dbeaver platform
IF NOT EXIST dbeaver git clone https://github.com/dbeaver/dbeaver.git
IF NOT EXIST dbeaver-common git clone https://github.com/dbeaver/dbeaver-common.git
cd cloudbeaver\deploy
echo Build cloudbeaver server
+4 -66
View File
@@ -2,70 +2,8 @@
set -Eeuo pipefail
#command line arguments
CONFIGURATION_PATH=${1-"../config/sample-databases/DefaultConfiguration"}
SAMPLE_DATABASE_PATH=${2-""}
CONFIGURATION_PATH="../config/sample-databases/DefaultConfiguration"
SAMPLE_DATABASE_PATH=""
echo "Clone and build Cloudbeaver"
rm -rf ./drivers
rm -rf ./cloudbeaver
mkdir ./cloudbeaver
mkdir ./cloudbeaver/server
mkdir ./cloudbeaver/conf
mkdir ./cloudbeaver/workspace
mkdir ./cloudbeaver/web
echo "Pull cloudbeaver platform"
cd ../..
echo "Pull dbeaver platform"
[ ! -d dbeaver ] && git clone https://github.com/dbeaver/dbeaver.git
cd cloudbeaver/deploy
echo "Build CloudBeaver server"
cd ../server/product/aggregate
mvn clean verify -U -Dheadless-platform
if [[ "$?" -ne 0 ]] ; then
echo 'Could not perform package'; exit $rc
fi
cd ../../../deploy
echo "Copy server packages"
cp -rp ../server/product/web-server/target/products/io.cloudbeaver.product/all/all/all/* ./cloudbeaver/server
cp -p ./scripts/* ./cloudbeaver
mkdir cloudbeaver/samples
if [[ ! -z "${SAMPLE_DATABASE_PATH}" ]]; then
mkdir cloudbeaver/samples/db
cp -rp "${SAMPLE_DATABASE_PATH}" cloudbeaver/samples/
fi
cp -rp ../config/core/* cloudbeaver/conf
cp -rp "${CONFIGURATION_PATH}"/GlobalConfiguration/.dbeaver/data-sources.json cloudbeaver/conf/initial-data-sources.conf
cp -p "${CONFIGURATION_PATH}"/*.conf cloudbeaver/conf/
mv drivers cloudbeaver
echo "Build static content"
cd ../
cd ../cloudbeaver/webapp
yarn
yarn lerna run bootstrap
yarn lerna run bundle --no-bail --stream --scope=@cloudbeaver/product-default #-- -- --env source-map
if [[ "$?" -ne 0 ]] ; then
echo 'Application build failed'; exit $rc
fi
cd ../deploy
echo "Copy static content"
cp -rp ../webapp/packages/product-default/lib/* cloudbeaver/web
echo "Cloudbeaver is ready. Run run-server.bat in cloudbeaver folder to start the server."
source build-backend.sh
source build-frontend.sh
+2 -1
View File
@@ -1,4 +1,4 @@
FROM ubuntu:23.04
FROM ubuntu:23.10
MAINTAINER DBeaver Corp, devops@dbeaver.com
@@ -7,6 +7,7 @@ RUN set -eux; \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
# curl required for historical reasons, see https://github.com/adoptium/containers/issues/255
curl \
wget \
# java.lang.UnsatisfiedLinkError: libfontmanager.so: libfreetype.so.6: cannot open shared object file: No such file or directory
# java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager
# https://github.com/docker-library/openjdk/pull/235#issuecomment-424466077
+1 -1
View File
@@ -1,5 +1,5 @@
@echo off
for /f %%a in ('dir /B /S server\plugins\org.eclipse.equinox.launcher*.jar') do SET launcherJar="%%a"
for /f %%a in ('dir /B /S server\plugins\org.jkiss.dbeaver.launcher*.jar') do SET launcherJar="%%a"
echo "Starting Cloudbeaver Server"
+2 -2
View File
@@ -1,6 +1,6 @@
#!/bin/bash
launcherJar=( server/plugins/org.eclipse.equinox.launcher*.jar )
launcherJar=( server/plugins/org.jkiss.dbeaver.launcher*.jar )
echo "Starting Cloudbeaver Server"
@@ -9,7 +9,7 @@ echo "Starting Cloudbeaver Server"
&& [ ! -f "workspace/GlobalConfiguration/.dbeaver/data-sources.json" ] \
&& cp conf/initial-data-sources.conf workspace/GlobalConfiguration/.dbeaver/data-sources.json
java ${JAVA_OPTS} \
exec java ${JAVA_OPTS} \
-Dfile.encoding=UTF-8 \
--add-modules=ALL-SYSTEM \
--add-opens=java.base/java.io=ALL-UNNAMED \
+1 -1
View File
@@ -1,4 +1,4 @@
{
"projects": ["../dbeaver", "../cloudbeaver/server"],
"projects": ["../dbeaver-common", "../dbeaver", "../cloudbeaver/server"],
"targetPlatform": "./org.jkiss.cloudbeaver.tp.target"
}
+2
View File
@@ -0,0 +1,2 @@
dbeaver-common
dbeaver
@@ -3,8 +3,8 @@ Bundle-ManifestVersion: 2
Bundle-Vendor: DBeaver Corp
Bundle-Name: Cloudbeaver Web Model
Bundle-SymbolicName: io.cloudbeaver.model;singleton:=true
Bundle-Version: 1.0.42.qualifier
Bundle-Release-Date: 20231204
Bundle-Version: 1.0.52.qualifier
Bundle-Release-Date: 20240506
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
@@ -18,7 +18,7 @@ Require-Bundle: org.jkiss.dbeaver.data.gis;visibility:=reexport,
org.jkiss.bundle.graphql.java;visibility:=reexport,
org.jkiss.bundle.apache.dbcp,
com.google.gson;visibility:=reexport,
jakarta.servlet-api;bundle-version="[4.0.0,4.0.0]";visibility:=reexport
jakarta.servlet;visibility:=reexport
Export-Package: io.cloudbeaver,
io.cloudbeaver.auth,
io.cloudbeaver.auth.provider,
@@ -33,6 +33,7 @@ Export-Package: io.cloudbeaver,
io.cloudbeaver.model.rm.lock,
io.cloudbeaver.model.session,
io.cloudbeaver.model.user,
io.cloudbeaver.model.utils,
io.cloudbeaver.registry,
io.cloudbeaver.server,
io.cloudbeaver.service,
@@ -19,4 +19,9 @@
</metaParameters>
</extension>
<extension point="com.dbeaver.secretController">
<controller id="void-secret" class="io.cloudbeaver.model.app.VoidSecretController"
label="Default secret controller" description="Default void secret controller"/>
</extension>
</plugin>
+1 -1
View File
@@ -10,7 +10,7 @@
<relativePath>../</relativePath>
</parent>
<artifactId>io.cloudbeaver.model</artifactId>
<version>1.0.42-SNAPSHOT</version>
<version>1.0.52-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,19 +22,21 @@ import org.jkiss.dbeaver.model.rm.RMConstants;
/**
* General constants
*/
public class DBWConstants {
public interface DBWConstants {
public static final String PERMISSION_ADMIN = DBAPermissionRealm.PERMISSION_ADMIN;
String PERMISSION_ADMIN = DBAPermissionRealm.PERMISSION_ADMIN;
public static final String PERMISSION_CONFIGURATION_MANAGER = RMConstants.PERMISSION_CONFIGURATION_MANAGER;
public static final String PERMISSION_PRIVATE_PROJECT_ACCESS = "private-project-access";
String PERMISSION_CONFIGURATION_MANAGER = RMConstants.PERMISSION_CONFIGURATION_MANAGER;
String PERMISSION_PRIVATE_PROJECT_ACCESS = "private-project-access";
String PERMISSION_SECRET_MANAGER = "secret-manager";
public static final String PERMISSION_EDIT_STRUCTURE = "edit-meta";
public static final String PERMISSION_EDIT_DATA = "edit-data";
public static final String STATE_ATTR_SIGN_IN_STATE = "state.signin";
String PERMISSION_EDIT_STRUCTURE = "edit-meta";
String PERMISSION_EDIT_DATA = "edit-data";
public enum SignInState {
String STATE_ATTR_SIGN_IN_STATE = "state.signin";
enum SignInState {
GLOBAL,
EMBEDDED
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,6 +29,7 @@ import org.jkiss.dbeaver.model.app.DBPProject;
import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration;
import org.jkiss.dbeaver.model.connection.DBPDriver;
import org.jkiss.dbeaver.model.net.DBWNetworkProfile;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.secret.DBSSecretController;
import org.jkiss.dbeaver.model.struct.DBSObjectFilter;
@@ -51,6 +52,7 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
this.dataSourceFilter = filter;
}
@NotNull
@Override
public DBPProject getProject() {
return dataSourceRegistry.getProject();
@@ -58,7 +60,7 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
@Nullable
@Override
public DBPDataSourceContainer getDataSource(String id) {
public DBPDataSourceContainer getDataSource(@NotNull String id) {
DBPDataSourceContainer dataSource = dataSourceRegistry.getDataSource(id);
if (dataSource == null || dataSourceFilter != null && !dataSourceFilter.filter(dataSource)) {
return null;
@@ -68,7 +70,7 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
@Nullable
@Override
public DBPDataSourceContainer getDataSource(DBPDataSource dataSource) {
public DBPDataSourceContainer getDataSource(@NotNull DBPDataSource dataSource) {
if (dataSourceFilter != null && !dataSourceFilter.filter(dataSource.getContainer())) {
return null;
}
@@ -107,13 +109,13 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
@NotNull
@Override
public DBPDataSourceContainer createDataSource(DBPDriver driver, DBPConnectionConfiguration connConfig) {
public DBPDataSourceContainer createDataSource(@NotNull DBPDriver driver, @NotNull DBPConnectionConfiguration connConfig) {
return dataSourceRegistry.createDataSource(driver, connConfig);
}
@NotNull
@Override
public DBPDataSourceContainer createDataSource(DBPDataSourceContainer source) {
public DBPDataSourceContainer createDataSource(@NotNull DBPDataSourceContainer source) {
return dataSourceRegistry.createDataSource(source);
}
@@ -164,18 +166,20 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
return dataSourceRegistry.getRootFolders();
}
@Nullable
@Override
public DBPDataSourceFolder getFolder(String path) {
public DBPDataSourceFolder getFolder(@NotNull String path) {
return dataSourceRegistry.getFolder(path);
}
@NotNull
@Override
public DBPDataSourceFolder addFolder(DBPDataSourceFolder parent, String name) {
public DBPDataSourceFolder addFolder(@Nullable DBPDataSourceFolder parent, @NotNull String name) {
return dataSourceRegistry.addFolder(parent, name);
}
@Override
public void removeFolder(DBPDataSourceFolder folder, boolean dropContents) {
public void removeFolder(@NotNull DBPDataSourceFolder folder, boolean dropContents) {
dataSourceRegistry.removeFolder(folder, dropContents);
}
@@ -197,18 +201,18 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
}
@Override
public void updateSavedFilter(DBSObjectFilter filter) {
public void updateSavedFilter(@NotNull DBSObjectFilter filter) {
dataSourceRegistry.updateSavedFilter(filter);
}
@Override
public void removeSavedFilter(String filterName) {
public void removeSavedFilter(@NotNull String filterName) {
dataSourceRegistry.removeSavedFilter(filterName);
}
@Nullable
@Override
public DBWNetworkProfile getNetworkProfile(String source, String name) {
public DBWNetworkProfile getNetworkProfile(@Nullable String source, @NotNull String name) {
return dataSourceRegistry.getNetworkProfile(source, name);
}
@@ -219,18 +223,18 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
}
@Override
public void updateNetworkProfile(DBWNetworkProfile profile) {
public void updateNetworkProfile(@NotNull DBWNetworkProfile profile) {
dataSourceRegistry.updateNetworkProfile(profile);
}
@Override
public void removeNetworkProfile(DBWNetworkProfile profile) {
public void removeNetworkProfile(@NotNull DBWNetworkProfile profile) {
dataSourceRegistry.removeNetworkProfile(profile);
}
@Nullable
@Override
public DBAAuthProfile getAuthProfile(String id) {
public DBAAuthProfile getAuthProfile(@NotNull String id) {
return dataSourceRegistry.getAuthProfile(id);
}
@@ -247,10 +251,15 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
}
@Override
public void updateAuthProfile(DBAAuthProfile profile) {
public void updateAuthProfile(@NotNull DBAAuthProfile profile) {
dataSourceRegistry.updateAuthProfile(profile);
}
@Override
public void setAuthProfiles(@NotNull Collection<DBAAuthProfile> profiles) {
dataSourceRegistry.setAuthProfiles(profiles);
}
@Override
public void removeAuthProfile(DBAAuthProfile profile) {
dataSourceRegistry.removeAuthProfile(profile);
@@ -271,6 +280,7 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
dataSourceRegistry.refreshConfig(dataSourceIds);
}
@Nullable
@Override
public Throwable getLastError() {
return dataSourceRegistry.getLastError();
@@ -287,7 +297,7 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
}
@Override
public void notifyDataSourceListeners(DBPEvent event) {
public void notifyDataSourceListeners(@NotNull DBPEvent event) {
dataSourceRegistry.notifyDataSourceListeners(event);
}
@@ -307,11 +317,18 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
dataSourceRegistry.setAuthCredentialsProvider(authCredentialsProvider);
}
@NotNull
@Override
public Set<DBPDataSourceFolder> getTemporaryFolders() {
return dataSourceRegistry.getTemporaryFolders();
}
@NotNull
@Override
public DBPPreferenceStore getPreferenceStore() {
return dataSourceRegistry.getPreferenceStore();
}
@Override
public boolean loadDataSources(
@NotNull List<DBPDataSourceConfigurationStorage> storages,
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,11 +17,13 @@
package io.cloudbeaver;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry;
import org.jkiss.dbeaver.model.app.DBPWorkspace;
import org.jkiss.dbeaver.model.auth.SMSessionContext;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import org.jkiss.dbeaver.model.rm.RMController;
import org.jkiss.dbeaver.model.rm.RMProject;
import org.jkiss.dbeaver.registry.rm.DataSourceRegistryRM;
@@ -29,17 +31,21 @@ import org.jkiss.dbeaver.runtime.DBWorkbench;
public abstract class WebProjectImpl extends BaseWebProjectImpl {
private static final Log log = Log.getLog(WebProjectImpl.class);
@NotNull
private final DBPPreferenceStore preferenceStore;
public WebProjectImpl(
@NotNull DBPWorkspace workspace,
@NotNull RMController resourceController,
@NotNull SMSessionContext sessionContext,
@NotNull RMProject project,
@NotNull DataSourceFilter dataSourceFilter
@NotNull DataSourceFilter dataSourceFilter,
@NotNull DBPPreferenceStore preferenceStore
) {
super(workspace, resourceController, sessionContext, project, dataSourceFilter);
this.preferenceStore = preferenceStore;
}
@Nullable
@Override
public Object getProjectProperty(String propName) {
try {
@@ -51,7 +57,7 @@ public abstract class WebProjectImpl extends BaseWebProjectImpl {
}
@Override
public void setProjectProperty(String propName, Object propValue) {
public void setProjectProperty(@NotNull String propName, @Nullable Object propValue) {
try {
getResourceController().setProjectProperty(getId(), propName, propValue);
} catch (DBException e) {
@@ -68,7 +74,7 @@ public abstract class WebProjectImpl extends BaseWebProjectImpl {
@Override
protected DBPDataSourceRegistry createDataSourceRegistry() {
return new WebDataSourceRegistryProxy(
new DataSourceRegistryRM(this, getResourceController()),
new DataSourceRegistryRM(this, getResourceController(), preferenceStore),
dataSourceFilter
);
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,8 +26,19 @@ public class WebSessionProjectImpl extends WebProjectImpl {
private final WebSession webSession;
public WebSessionProjectImpl(@NotNull WebSession webSession, @NotNull RMProject project, @NotNull DataSourceFilter dataSourceFilter) {
super(webSession.getWorkspace(), webSession.getRmController(), webSession.getSessionContext(), project, dataSourceFilter);
public WebSessionProjectImpl(
@NotNull WebSession webSession,
@NotNull RMProject project,
@NotNull DataSourceFilter dataSourceFilter
) {
super(
webSession.getWorkspace(),
webSession.getRmController(),
webSession.getSessionContext(),
project,
dataSourceFilter,
webSession.getUserPreferenceStore()
);
this.webSession = webSession;
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,6 +25,7 @@ public interface CBAuthConstants {
String CB_AUTH_ID_REQUEST_PARAM = "authId";
String CB_AUTO_LOGIN_REQUEST_PARAM = "autoLogin";
String CB_REDIRECT_URL_REQUEST_PARAM = "redirectUrl";
String CB_FORCE_SESSIONS_LOGOUT = "forceSessionsLogout";
// Default max idle time (10 minutes)
long MAX_SESSION_IDLE_TIME = 10 * 60 * 1000;
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,6 +19,7 @@ package io.cloudbeaver.auth;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.security.SMAuthProviderCustomConfiguration;
import java.util.Map;
@@ -26,17 +27,18 @@ import java.util.Map;
* Federated auth provider.
* Provides links to external auth resource
*/
public interface SMAuthProviderFederated {
public interface SMAuthProviderFederated extends SMSignOutLinkProvider {
/**
* Returns new identifying credentials which can be used to find/create user in database
*/
@NotNull
String getSignInLink(String id, @NotNull Map<String, Object> providerConfig) throws DBException;
@NotNull
String getSignOutLink(String id, @NotNull Map<String, Object> providerConfig) throws DBException;
@Override
default String getUserSignOutLink(
@NotNull SMAuthProviderCustomConfiguration providerConfig,
@NotNull Map<String, Object> userCredentials
) throws DBException {
return getCommonSignOutLink(providerConfig.getId(), providerConfig.getParameters());
}
@Nullable
String getMetadataLink(String id, @NotNull Map<String, Object> providerConfig) throws DBException;
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,16 +14,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.server.events;
package io.cloudbeaver.auth;
import io.cloudbeaver.server.CBPlatform;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.websocket.WSEventHandler;
import org.jkiss.dbeaver.model.websocket.event.WSUserDeletedEvent;
public class WSUserDeletedEventHandler<EVENT extends WSUserDeletedEvent> implements WSEventHandler<EVENT> {
@Override
public void handleEvent(@NotNull EVENT event) {
CBPlatform.getInstance().getSessionManager().closeUserSessions(event.getDeletedUserId());
}
import java.util.Map;
public interface SMBruteForceProtected {
Object getInputUsername(@NotNull Map<String, Object> cred);
}
@@ -0,0 +1,37 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.auth;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.security.SMAuthProviderCustomConfiguration;
import java.util.Map;
public interface SMSignOutLinkProvider {
/**
* @return a common link for logout, not related with the user context
*/
@NotNull
String getCommonSignOutLink(String id, @NotNull Map<String, Object> providerConfig) throws DBException;
String getUserSignOutLink(
@NotNull SMAuthProviderCustomConfiguration providerConfig,
@NotNull Map<String, Object> userCredentials
) throws DBException;
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -31,4 +31,8 @@ public interface SMProvisioner {
@NotNull SMAuthProviderCustomConfiguration customConfiguration,
@NotNull SMProvisioningFilter filter
) throws DBException;
default boolean isAuthRoleProvided(SMAuthProviderCustomConfiguration configuration) {
return false;
}
}
@@ -0,0 +1,30 @@
package io.cloudbeaver.model;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBPDataSourceHandler;
import org.jkiss.dbeaver.model.connection.DBPDriver;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
public abstract class BaseDatasourceAccessCheckHandler implements DBPDataSourceHandler {
@Override
public void beforeConnect(
DBRProgressMonitor monitor,
@NotNull DBPDataSourceContainer dataSourceContainer
) throws DBException {
if (isDriverDisabled(dataSourceContainer.getDriver())) {
throw new DBException("Driver disabled");
}
}
@Override
public void beforeDisconnect(
DBRProgressMonitor monitor,
@NotNull DBPDataSourceContainer dataSourceContainer
) throws DBException {
}
protected abstract boolean isDriverDisabled(DBPDriver driver);
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -443,4 +443,17 @@ public class WebConnectionInfo {
closeListeners.add(listener);
}
@Property
public int getKeepAliveInterval() {
return dataSourceContainer.getConnectionConfiguration().getKeepAliveInterval();
}
@Property
public List<WebSecretInfo> getSharedSecrets() throws DBException {
return dataSourceContainer.listSharedCredentials()
.stream()
.map(WebSecretInfo::new)
.collect(Collectors.toList());
}
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,14 +18,10 @@ package io.cloudbeaver.model;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.net.DBWHandlerConfiguration;
import org.jkiss.dbeaver.model.net.DBWHandlerDescriptor;
import org.jkiss.dbeaver.model.net.DBWHandlerType;
import org.jkiss.dbeaver.model.net.ssh.SSHConstants;
import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor;
import org.jkiss.dbeaver.model.preferences.DBPPropertySource;
import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor;
import org.jkiss.dbeaver.registry.RegistryConstants;
import org.jkiss.dbeaver.runtime.properties.PropertySourceMap;
import org.jkiss.utils.CommonUtils;
import java.util.LinkedHashMap;
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -27,7 +27,6 @@ import org.jkiss.dbeaver.model.rm.RMResourceType;
import org.jkiss.utils.ArrayUtils;
import java.util.ArrayList;
import java.util.Collections;
public class WebProjectInfo {
private final WebSession session;
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +18,7 @@ package io.cloudbeaver.model;
import io.cloudbeaver.model.session.WebSession;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.*;
import org.jkiss.dbeaver.model.connection.DBPDriverConfigurationType;
@@ -27,6 +28,7 @@ import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.dbeaver.model.meta.PropertyLength;
import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor;
import org.jkiss.dbeaver.model.preferences.DBPPropertySource;
import org.jkiss.dbeaver.registry.settings.ProductSettingDescriptor;
import org.jkiss.dbeaver.runtime.properties.ObjectPropertyDescriptor;
import org.jkiss.utils.CommonUtils;
@@ -173,6 +175,11 @@ public class WebPropertyInfo {
return new String[0];
}
@Property
public boolean isRequired() {
return property.isRequired();
}
public boolean hasFeature(@NotNull String feature) {
return property.hasFeature(feature);
}
@@ -237,4 +244,12 @@ public class WebPropertyInfo {
return CommonUtils.toString(value);
}
@Nullable
@Property
public List<String> getScopes() {
if (property instanceof ProductSettingDescriptor productSettingDescriptor) {
return productSettingDescriptor.getScopes();
}
return null;
}
}
@@ -0,0 +1,38 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model;
import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.dbeaver.model.secret.DBSSecretValue;
public class WebSecretInfo {
private final DBSSecretValue secretValue;
public WebSecretInfo(DBSSecretValue secretValue) {
this.secretValue = secretValue;
}
@Property
public String getDisplayName() {
return secretValue.getDisplayName();
}
@Property
public String getSecretId() {
return secretValue.getUniqueId();
}
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -0,0 +1,34 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model.app;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
/**
* Abstract class that contains methods for loading configuration with gson.
*/
public abstract class BaseServerConfigurationController<T extends WebServerConfiguration> implements WebServerConfigurationController<T> {
protected Gson getGson() {
return getGsonBuilder().create();
}
protected abstract GsonBuilder getGsonBuilder();
public abstract T getServerConfiguration();
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,14 +29,13 @@ public abstract class BaseWebAppConfiguration implements WebAppConfiguration {
public static final String DEFAULT_APP_ANONYMOUS_TEAM_NAME = "user";
protected final Map<String, Object> plugins;
protected String defaultUserTeam;
protected String defaultUserTeam = DEFAULT_APP_ANONYMOUS_TEAM_NAME;
protected boolean resourceManagerEnabled;
protected boolean showReadOnlyConnectionInfo;
protected String[] enabledFeatures;
public BaseWebAppConfiguration() {
this.plugins = new LinkedHashMap<>();
this.defaultUserTeam = DEFAULT_APP_ANONYMOUS_TEAM_NAME;
this.resourceManagerEnabled = true;
this.enabledFeatures = null;
this.showReadOnlyConnectionInfo = false;
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,8 +16,6 @@
*/
package io.cloudbeaver.model.app;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import io.cloudbeaver.DataSourceFilter;
import io.cloudbeaver.WebProjectImpl;
import io.cloudbeaver.WebSessionProjectImpl;
@@ -35,6 +33,7 @@ import org.jkiss.dbeaver.model.DBFileController;
import org.jkiss.dbeaver.model.app.DBPPlatform;
import org.jkiss.dbeaver.model.app.DBPWorkspace;
import org.jkiss.dbeaver.model.auth.SMCredentialsProvider;
import org.jkiss.dbeaver.model.auth.SMSessionContext;
import org.jkiss.dbeaver.model.data.json.JSONUtils;
import org.jkiss.dbeaver.model.impl.app.ApplicationRegistry;
import org.jkiss.dbeaver.model.rm.RMController;
@@ -101,8 +100,7 @@ public abstract class BaseWebApplication extends BaseApplicationImpl implements
return true;
}
@Nullable
protected Path loadServerConfiguration() throws DBException {
protected boolean loadServerConfiguration() throws DBException {
Path configFilePath = getMainConfigurationFilePath().toAbsolutePath();
Path configFolder = configFilePath.getParent();
@@ -119,13 +117,13 @@ public abstract class BaseWebApplication extends BaseApplicationImpl implements
// Load config file
log.debug("Loading configuration from " + configFilePath);
try {
loadConfiguration(configFilePath);
getServerConfigurationController().loadServerConfiguration(configFilePath);
} catch (Exception e) {
log.error("Error parsing configuration", e);
return null;
return false;
}
return configFilePath;
return true;
}
@Nullable
@@ -152,7 +150,7 @@ public abstract class BaseWebApplication extends BaseApplicationImpl implements
return getLogbackConfigPath(configFolder);
}
private Path getMainConfigurationFilePath() {
protected Path getMainConfigurationFilePath() {
String configPath = DEFAULT_CONFIG_FILE_PATH;
String[] args = Platform.getCommandLineArgs();
@@ -178,8 +176,6 @@ public abstract class BaseWebApplication extends BaseApplicationImpl implements
return Files.exists(customConfigPath) ? customConfigPath : configPath.resolve(fileName);
}
protected abstract void loadConfiguration(Path configPath) throws DBException;
@Override
public WebProjectImpl createProjectImpl(
@NotNull WebSession webSession,
@@ -199,11 +195,14 @@ public abstract class BaseWebApplication extends BaseApplicationImpl implements
* Advanced apps may implement it differently.
*/
@Override
public DBSSecretController getSecretController(@NotNull SMCredentialsProvider credentialsProvider) throws DBException {
public DBSSecretController getSecretController(
@NotNull SMCredentialsProvider credentialsProvider,
SMSessionContext smSessionContext
) throws DBException {
return VoidSecretController.INSTANCE;
}
protected Map<String, Object> getServerConfigProps(Map<String, Object> configProps) {
public static Map<String, Object> getServerConfigProps(Map<String, Object> configProps) {
return JSONUtils.getObject(configProps, "server");
}
@@ -231,6 +230,7 @@ public abstract class BaseWebApplication extends BaseApplicationImpl implements
@Override
public Object start(IApplicationContext context) {
initializeApplicationServices();
try {
startServer();
} catch (Exception e) {
@@ -265,10 +265,10 @@ public abstract class BaseWebApplication extends BaseApplicationImpl implements
return null;
}
protected Gson getGson() {
return getGsonBuilder().create();
public abstract WebServerConfigurationController getServerConfigurationController();
@Override
public boolean isEnvironmentVariablesAccessible() {
return false;
}
protected abstract GsonBuilder getGsonBuilder();
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,12 +19,20 @@ package io.cloudbeaver.model.app;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.auth.SMCredentialsProvider;
import org.jkiss.dbeaver.model.auth.SMSessionContext;
import org.jkiss.dbeaver.model.exec.DBCFeatureNotSupportedException;
import org.jkiss.dbeaver.model.secret.DBSSecretController;
import org.jkiss.dbeaver.model.secret.DBSSecretControllerAuthorized;
import org.jkiss.dbeaver.model.secret.DBSSecretObject;
import org.jkiss.dbeaver.model.secret.DBSSecretValue;
import java.util.List;
/**
* Void secret controller.
*/
public class VoidSecretController implements DBSSecretController {
public class VoidSecretController implements DBSSecretController, DBSSecretControllerAuthorized {
public static final VoidSecretController INSTANCE = new VoidSecretController();
@@ -34,17 +42,30 @@ public class VoidSecretController implements DBSSecretController {
@Nullable
@Override
public String getSecretValue(@NotNull String secretId) {
public String getPrivateSecretValue(@NotNull String secretId) {
return null;
}
@Override
public void setSecretValue(@NotNull String secretId, @Nullable String secretValue) throws DBException {
public void setPrivateSecretValue(@NotNull String secretId, @Nullable String secretValue) throws DBException {
throw new DBException("Secret controller is read-only");
}
@NotNull
@Override
public List<DBSSecretValue> discoverCurrentUserSecrets(@NotNull DBSSecretObject secretObject) throws DBException {
throw new DBCFeatureNotSupportedException("Secrets discovery not supported");
}
@Override
public void flushChanges() {
}
@Override
public void authorize(
@Nullable SMCredentialsProvider credentialsProvider,
@Nullable SMSessionContext smSessionContext
) throws DBException {
}
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,6 +25,7 @@ import org.jkiss.dbeaver.model.DBFileController;
import org.jkiss.dbeaver.model.app.DBPApplication;
import org.jkiss.dbeaver.model.app.DBPWorkspace;
import org.jkiss.dbeaver.model.auth.SMCredentialsProvider;
import org.jkiss.dbeaver.model.auth.SMSessionContext;
import org.jkiss.dbeaver.model.rm.RMController;
import org.jkiss.dbeaver.model.rm.RMProject;
import org.jkiss.dbeaver.model.secret.DBSSecretController;
@@ -42,6 +43,8 @@ public interface WebApplication extends DBPApplication {
WebAppConfiguration getAppConfiguration();
WebServerConfiguration getServerConfiguration();
Path getDataDirectory(boolean create);
Path getWorkspaceDirectory();
@@ -60,7 +63,10 @@ public interface WebApplication extends DBPApplication {
SMAdminController getAdminSecurityController(@NotNull SMCredentialsProvider credentialsProvider) throws DBException;
DBSSecretController getSecretController(@NotNull SMCredentialsProvider credentialsProvider) throws DBException;
DBSSecretController getSecretController(
@NotNull SMCredentialsProvider credentialsProvider,
SMSessionContext smSessionContext
) throws DBException;
RMController createResourceController(
@NotNull SMCredentialsProvider credentialsProvider,
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,6 +20,8 @@ package io.cloudbeaver.model.app;
import io.cloudbeaver.auth.CBAuthConstants;
import org.jkiss.dbeaver.DBException;
import java.util.List;
public interface WebAuthApplication extends WebApplication {
WebAuthConfiguration getAuthConfiguration();
@@ -30,4 +32,6 @@ public interface WebAuthApplication extends WebApplication {
}
void flushConfiguration() throws DBException;
String getDefaultAuthRole();
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -0,0 +1,30 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model.app;
/**
* Web server configuration.
* Contains only server configuration properties.
*/
public interface WebServerConfiguration {
boolean isDevelMode();
default String getRootURI() {
return "";
}
}
@@ -0,0 +1,34 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model.app;
import org.jkiss.dbeaver.DBException;
import java.nio.file.Path;
/**
* Server configuration controller.
* Works with app server configuration (loads, updates)
*/
public interface WebServerConfigurationController<T extends WebServerConfiguration> {
/**
* Loads server configuration.
*/
void loadServerConfiguration(Path configPath) throws DBException;
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,18 +1,18 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* NOTICE: All information contained herein is, and remains
* the property of DBeaver Corp and its suppliers, if any.
* The intellectual and technical concepts contained
* herein are proprietary to DBeaver Corp and its suppliers
* and may be covered by U.S. and Foreign Patents,
* patents in process, and are protected by trade secret or copyright law.
* Dissemination of this information or reproduction of this material
* is strictly forbidden unless prior written permission is obtained
* from DBeaver Corp.
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model.rm;
@@ -56,19 +56,25 @@ public class DBNResourceManagerProject extends DBNAbstractResourceManagerNode {
return project.getId();
}
@NotNull
@Override
public String getNodeId() {
return project.getId();
}
@Override
public String getNodeType() {
return "rm.project";
}
@Override
public String getNodeName() {
public String getNodeDisplayName() {
return project.getDisplayName();
}
@Override
public String getLocalizedName(String locale) {
return getNodeName();
return getNodeDisplayName();
}
@Override
@@ -105,6 +111,7 @@ public class DBNResourceManagerProject extends DBNAbstractResourceManagerNode {
return ((DBNResourceManagerRoot) getParentNode()).getResourceController();
}
@Deprecated
@Override
public String getNodeItemPath() {
return getParentNode().getNodeItemPath() + "/" + getName();
@@ -118,7 +125,7 @@ public class DBNResourceManagerProject extends DBNAbstractResourceManagerNode {
@Override
public String toString() {
return getNodeName();
return getNodeDisplayName();
}
@@ -1,18 +1,18 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* NOTICE: All information contained herein is, and remains
* the property of DBeaver Corp and its suppliers, if any.
* The intellectual and technical concepts contained
* herein are proprietary to DBeaver Corp and its suppliers
* and may be covered by U.S. and Foreign Patents,
* patents in process, and are protected by trade secret or copyright law.
* Dissemination of this information or reproduction of this material
* is strictly forbidden unless prior written permission is obtained
* from DBeaver Corp.
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model.rm;
@@ -55,7 +55,7 @@ public class DBNResourceManagerResource extends DBNAbstractResourceManagerNode {
}
@Override
public String getNodeName() {
public String getNodeDisplayName() {
return resource.getName();
}
@@ -80,7 +80,7 @@ public class DBNResourceManagerResource extends DBNAbstractResourceManagerNode {
}
return DBIcon.TREE_FOLDER;
} else {
var fileExtension = IOUtils.getFileExtension(getNodeName());
var fileExtension = IOUtils.getFileExtension(getNodeDisplayName());
if (!CommonUtils.isEmpty(fileExtension)) {
RMProject project = getProjectNode();
if (project != null) {
@@ -154,9 +154,10 @@ public class DBNResourceManagerResource extends DBNAbstractResourceManagerNode {
throw new DBException("Can't detect resource root node");
}
@Deprecated
@Override
public String getNodeItemPath() {
return getParentNode().getNodeItemPath() + "/" + getNodeName();
return getParentNode().getNodeItemPath() + "/" + getNodeDisplayName();
}
@Override
@@ -174,7 +175,7 @@ public class DBNResourceManagerResource extends DBNAbstractResourceManagerNode {
String resourceName = resource.getName();
try {
if (newName.indexOf('.') == -1) {
String ext = IOUtils.getFileExtension(getNodeName());
String ext = IOUtils.getFileExtension(getNodeDisplayName());
if (!CommonUtils.isEmpty(ext)) {
newName += "." + ext;
}
@@ -193,7 +194,7 @@ public class DBNResourceManagerResource extends DBNAbstractResourceManagerNode {
@Override
public String toString() {
return getNodeName();
return getNodeDisplayName();
}
@Nullable
@@ -1,18 +1,18 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* NOTICE: All information contained herein is, and remains
* the property of DBeaver Corp and its suppliers, if any.
* The intellectual and technical concepts contained
* herein are proprietary to DBeaver Corp and its suppliers
* and may be covered by U.S. and Foreign Patents,
* patents in process, and are protected by trade secret or copyright law.
* Dissemination of this information or reproduction of this material
* is strictly forbidden unless prior written permission is obtained
* from DBeaver Corp.
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model.rm;
@@ -54,8 +54,14 @@ public class DBNResourceManagerRoot extends DBNNode implements DBPHiddenObject,
return "rm";
}
@NotNull
@Override
public String getNodeName() {
public String getNodeId() {
return "rm";
}
@Override
public String getNodeDisplayName() {
return "resources";
}
@@ -103,10 +109,11 @@ public class DBNResourceManagerRoot extends DBNNode implements DBPHiddenObject,
return projects;
}
@Deprecated
@Override
public String getNodeItemPath() {
// Path doesn't include project name
return NodePathType.ext.getPrefix() + getNodeName();
return NodePathType.ext.getPrefix() + getNodeDisplayName();
}
@Override
@@ -115,11 +122,6 @@ public class DBNResourceManagerRoot extends DBNNode implements DBPHiddenObject,
return this;
}
@Override
public String toString() {
return getNodeName();
}
@Override
public boolean isHidden() {
return true;
@@ -152,8 +154,13 @@ public class DBNResourceManagerRoot extends DBNNode implements DBPHiddenObject,
return;
}
var projectNode = getProjectNode(project);
var rmResourcePath = Arrays.asList(resourcePath.split("/"));
projectNode.ifPresent(dbnResourceManagerProject -> dbnResourceManagerProject.removeChildResourceNode(new ArrayDeque<>(rmResourcePath)));
var rmResourcePath = Arrays.stream(resourcePath.split("/"))
.filter(CommonUtils::isNotEmpty)
.toList();
projectNode.ifPresent(
dbnResourceManagerProject -> dbnResourceManagerProject.removeChildResourceNode(new ArrayDeque<>(
rmResourcePath))
);
}
@NotNull
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -48,6 +48,7 @@ import org.jkiss.dbeaver.model.websocket.event.WSEventType;
import org.jkiss.dbeaver.model.websocket.event.WSSessionLogUpdatedEvent;
import org.jkiss.dbeaver.registry.*;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.dbeaver.utils.GeneralUtils;
import org.jkiss.utils.ArrayUtils;
import org.jkiss.utils.CommonUtils;
import org.jkiss.utils.IOUtils;
@@ -281,7 +282,7 @@ public class LocalResourceController implements RMController {
throw new DBException("Error creating shared project path", e);
}
}
validateResourcePath(name, PROJECT_REGEX);
validateResourcePath(name);
RMProject project;
var projectPath = sharedProjectsPath.resolve(name);
if (Files.exists(projectPath)) {
@@ -461,6 +462,7 @@ public class LocalResourceController implements RMController {
DBPDataSourceRegistry registry = project.getDataSourceRegistry();
var result = Path.of(folderPath);
var newName = result.getFileName().toString();
GeneralUtils.validateResourceName(newName);
var parent = result.getParent();
var parentFolder = parent == null ? null : registry.getFolder(parent.toString().replace("\\", "/"));
DBPDataSourceFolder newFolder = registry.addFolder(parentFolder, newName);
@@ -835,19 +837,10 @@ public class LocalResourceController implements RMController {
}
private void validateResourcePath(String resourcePath) throws DBException {
validateResourcePath(resourcePath, FILE_REGEX);
}
private void validateResourcePath(String resourcePath, String regex) throws DBException {
var fullPath = Paths.get(resourcePath);
for (Path path : fullPath) {
if (path.toString().startsWith(".")) {
throw new DBException("Resource path '" + resourcePath + "' can't start with dot");
}
}
if (!resourcePath.matches(regex)) {
String illegalCharacters = resourcePath.replaceAll(regex, " ").strip();
throw new DBException("Resource path '" + resourcePath + "' contains illegal characters: " + illegalCharacters);
String fileName = IOUtils.getFileNameWithoutExtension(path);
GeneralUtils.validateResourceName(fileName);
}
}
@@ -1162,6 +1155,11 @@ public class LocalResourceController implements RMController {
return new Builder(workspace, credentialsProvider, smControllerSupplier);
}
@Override
public String ping() {
return "pong (RM)";
}
public static final class Builder {
private final SMCredentialsProvider credentialsProvider;
private final Supplier<SMController> smController;
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -114,7 +114,9 @@ public abstract class BaseWebSession extends AbstractSessionPersistent {
public synchronized void refreshUserData() {
try {
userContext.refreshPermissions();
userContext.refreshAccessibleProjects();
if (userContext.isAuthorizedInSecurityManager()) {
userContext.refreshAccessibleProjects();
}
} catch (DBException e) {
addSessionError(e);
log.error("Error refreshing accessible projects", e);
@@ -133,6 +135,11 @@ public abstract class BaseWebSession extends AbstractSessionPersistent {
return workspace.getAuthContext();
}
protected void clearSessionContext() {
this.workspace.getAuthContext().clear();
this.workspace.getAuthContext().addSession(this);
}
@NotNull
@Property
public String getSessionId() {
@@ -166,6 +173,14 @@ public abstract class BaseWebSession extends AbstractSessionPersistent {
@Override
public void close() {
super.close();
cleanUpSession();
}
public void close(boolean clearTokens) {
cleanUpSession();
}
private void cleanUpSession() {
var sessionExpiredEvent = new WSSessionExpiredEvent();
application.getEventController().addEvent(new WSEventDeleteTempFile(getSessionId()));
synchronized (sessionEventHandlers) {
@@ -180,6 +195,8 @@ public abstract class BaseWebSession extends AbstractSessionPersistent {
sessionEventHandlers.clear();
workspace.dispose();
clearSessionContext();
}
}
@@ -1,18 +1,18 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* NOTICE: All information contained herein is, and remains
* the property of DBeaver Corp and its suppliers, if any.
* The intellectual and technical concepts contained
* herein are proprietary to DBeaver Corp and its suppliers
* and may be covered by U.S. and Foreign Patents,
* patents in process, and are protected by trade secret or copyright law.
* Dissemination of this information or reproduction of this material
* is strictly forbidden unless prior written permission is obtained
* from DBeaver Corp.
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model.session;
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,6 +22,7 @@ import io.cloudbeaver.model.user.WebUserOriginInfo;
import io.cloudbeaver.registry.WebAuthProviderDescriptor;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.auth.SMAuthInfo;
import org.jkiss.dbeaver.model.auth.SMAuthProvider;
import org.jkiss.dbeaver.model.auth.SMSession;
import org.jkiss.dbeaver.model.auth.SMSessionPrincipal;
@@ -41,7 +42,10 @@ public class WebAuthInfo implements SMSessionPrincipal {
private final WebUser user;
private final WebAuthProviderDescriptor authProvider;
private String authProviderConfigurationId;
private SMSession authSession;
@NotNull
private final SMAuthInfo authInfo;
@NotNull
private final SMSession authSession;
private final OffsetDateTime loginTime;
private final DBWUserIdentity userIdentity;
private String message;
@@ -54,11 +58,14 @@ public class WebAuthInfo implements SMSessionPrincipal {
@NotNull WebAuthProviderDescriptor authProvider,
@NotNull DBWUserIdentity userIdentity,
@NotNull SMSession authSession,
@NotNull OffsetDateTime loginTime) {
@NotNull SMAuthInfo authInfo,
@NotNull OffsetDateTime loginTime
) {
this.session = session;
this.user = user;
this.authProvider = authProvider;
this.userIdentity = userIdentity;
this.authInfo = authInfo;
this.authSession = authSession;
this.loginTime = loginTime;
}
@@ -119,10 +126,16 @@ public class WebAuthInfo implements SMSessionPrincipal {
return authProvider;
}
@NotNull
public SMSession getAuthSession() {
return authSession;
}
@NotNull
public SMAuthInfo getAuthInfo() {
return authInfo;
}
void closeAuth() {
if (authProvider != null && authSession != null) {
try {
@@ -130,8 +143,6 @@ public class WebAuthInfo implements SMSessionPrincipal {
authProviderInstance.closeSession(session, authSession);
} catch (Exception e) {
log.error(e);
} finally {
authSession = null;
}
}
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,6 +19,7 @@ package io.cloudbeaver.model.session;
import io.cloudbeaver.model.WebServerMessage;
import io.cloudbeaver.model.app.WebAuthApplication;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.auth.SMSessionPrincipal;
@@ -43,6 +44,7 @@ public class WebHeadlessSession extends BaseWebSession {
}
@Nullable
@Override
public SMSessionPrincipal getSessionPrincipal() {
return null;
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -33,6 +33,7 @@ import io.cloudbeaver.service.sql.WebSQLConstants;
import io.cloudbeaver.utils.CBModelConstants;
import io.cloudbeaver.utils.WebAppUtils;
import io.cloudbeaver.utils.WebDataSourceUtils;
import jakarta.servlet.http.HttpServletRequest;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -55,6 +56,7 @@ import org.jkiss.dbeaver.model.fs.DBFFileSystemManager;
import org.jkiss.dbeaver.model.meta.Association;
import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.dbeaver.model.navigator.DBNModel;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import org.jkiss.dbeaver.model.rm.RMController;
import org.jkiss.dbeaver.model.rm.RMProject;
import org.jkiss.dbeaver.model.rm.RMProjectType;
@@ -77,9 +79,6 @@ import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.dbeaver.runtime.jobs.DisconnectJob;
import org.jkiss.utils.CommonUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.lang.reflect.InvocationTargetException;
import java.time.Instant;
import java.util.*;
@@ -91,7 +90,7 @@ import java.util.stream.Collectors;
* Is the main source of data in web application
*/
public class WebSession extends BaseWebSession
implements SMSession, SMCredentialsProvider, DBACredentialsProvider, IAdaptable {
implements SMSessionWithAuth, SMCredentialsProvider, DBACredentialsProvider, IAdaptable {
private static final Log log = Log.getLog(WebSession.class);
@@ -100,6 +99,7 @@ public class WebSession extends BaseWebSession
private static final String ATTR_LOCALE = "locale";
private static final AtomicInteger TASK_ID = new AtomicInteger();
public static String RUNTIME_PARAM_AUTH_INFOS = "auth-infos";
private final AtomicInteger taskCount = new AtomicInteger();
private String lastRemoteAddr;
@@ -124,16 +124,24 @@ public class WebSession extends BaseWebSession
private final Map<String, DBWSessionHandler> sessionHandlers;
public WebSession(
@NotNull HttpSession httpSession,
@NotNull HttpServletRequest request,
@NotNull WebAuthApplication application,
@NotNull Map<String, DBWSessionHandler> sessionHandlers
) throws DBException {
super(httpSession.getId(), application);
super(request.getSession().getId(), application);
this.lastAccessTime = this.createTime;
setLocale(CommonUtils.toString(httpSession.getAttribute(ATTR_LOCALE), this.locale));
setLocale(CommonUtils.toString(request.getSession().getAttribute(ATTR_LOCALE), this.locale));
this.sessionHandlers = sessionHandlers;
//force authorization of anonymous session to avoid access error,
//because before authorization could be called by any request,
//but now 'updateInfo' is called only in special requests,
//and the order of requests is not guaranteed.
//look at CB-4747
refreshSessionAuth();
updateSessionParameters(request);
}
@Nullable
@Override
public SMSessionPrincipal getSessionPrincipal() {
synchronized (authTokens) {
@@ -273,34 +281,38 @@ public class WebSession extends BaseWebSession
continue;
}
switch (type) {
case DATASOURCE_CREATED: {
case DATASOURCE_CREATED -> {
WebConnectionInfo connectionInfo = new WebConnectionInfo(this, ds);
this.connections.put(connectionInfo.getId(), connectionInfo);
this.connections.put(getConnectionId(ds), connectionInfo);
sendDataSourceUpdatedEvent = true;
break;
}
case DATASOURCE_UPDATED: {
// if settings were changed we need to send event
case DATASOURCE_UPDATED -> // if settings were changed we need to send event
sendDataSourceUpdatedEvent |= !ds.equalSettings(oldDataSources.get(dsId));
break;
}
case DATASOURCE_DELETED: {
case DATASOURCE_DELETED -> {
WebDataSourceUtils.disconnectDataSource(this, ds);
if (registry instanceof DBPDataSourceRegistryCache) {
((DBPDataSourceRegistryCache) registry).removeDataSourceFromList(ds);
if (registry instanceof DBPDataSourceRegistryCache dsrc) {
dsrc.removeDataSourceFromList(ds);
}
this.connections.remove(ds.getId());
this.connections.remove(getConnectionId(ds));
sendDataSourceUpdatedEvent = true;
break;
}
default: {
break;
default -> {
}
}
}
return sendDataSourceUpdatedEvent;
}
@NotNull
private String getConnectionId(@NotNull DBPDataSourceContainer container) {
return getConnectionId(container.getProject().getId(), container.getId());
}
@NotNull
private String getConnectionId(@NotNull String projectId, @NotNull String dsId) {
return projectId + ":" + dsId;
}
// Note: for admin use only
public synchronized void resetUserState() throws DBException {
clearAuthTokens();
@@ -311,6 +323,7 @@ public class WebSession extends BaseWebSession
log.error(e);
}
refreshUserData();
clearSessionContext();
}
private void initNavigatorModel() {
@@ -470,7 +483,7 @@ public class WebSession extends BaseWebSession
var registry = getProjectById(WebAppUtils.getGlobalProjectId()).getDataSourceRegistry();
var dataSource = registry.getDataSource(dsId);
if (dataSource != null) {
connections.put(dsId, new WebConnectionInfo(this, dataSource));
connections.put(getConnectionId(dataSource), new WebConnectionInfo(this, dataSource));
// reflect changes is navigator model
registry.notifyDataSourceListeners(new DBPEvent(DBPEvent.Action.OBJECT_ADD, dataSource, true));
}
@@ -481,7 +494,7 @@ public class WebSession extends BaseWebSession
var dataSource = registry.getDataSource(dsId);
if (dataSource != null) {
this.accessibleConnectionIds.remove(dsId);
connections.remove(dsId);
connections.remove(getConnectionId(dataSource));
// reflect changes is navigator model
registry.notifyDataSourceListeners(new DBPEvent(DBPEvent.Action.OBJECT_REMOVE, dataSource));
dataSource.dispose();
@@ -522,16 +535,10 @@ public class WebSession extends BaseWebSession
}
}
public synchronized void updateInfo(
HttpServletRequest request,
HttpServletResponse response
) throws DBWebException {
public synchronized void updateInfo(boolean isOldHttpSessionUsed) {
log.debug("Update session lifetime " + getSessionId() + " for user " + getUserId());
touchSession();
HttpSession httpSession = request.getSession();
this.lastRemoteAddr = request.getRemoteAddr();
this.lastRemoteUserAgent = request.getHeader("User-Agent");
this.cacheExpired = false;
if (!httpSession.isNew()) {
if (isOldHttpSessionUsed) {
try {
// Persist session
if (!isAuthorizedInSecurityManager()) {
@@ -551,6 +558,12 @@ public class WebSession extends BaseWebSession
}
}
public synchronized void updateSessionParameters(HttpServletRequest request) {
this.lastRemoteAddr = request.getRemoteAddr();
this.lastRemoteUserAgent = request.getHeader("User-Agent");
this.cacheExpired = false;
}
@Association
public List<WebConnectionInfo> getConnections() {
synchronized (connections) {
@@ -560,9 +573,21 @@ public class WebSession extends BaseWebSession
@NotNull
public WebConnectionInfo getWebConnectionInfo(@Nullable String projectId, String connectionID) throws DBWebException {
WebConnectionInfo connectionInfo;
WebConnectionInfo connectionInfo = null;
synchronized (connections) {
connectionInfo = connections.get(connectionID);
if (projectId != null) {
connectionInfo = connections.get(getConnectionId(projectId, connectionID));
} else {
addWarningMessage("Project id is not defined in request. Try to find it from connection cache");
for (Map.Entry<String, WebConnectionInfo> entry : connections.entrySet()) {
String k = entry.getKey();
WebConnectionInfo v = entry.getValue();
if (k.contains(connectionID)) {
connectionInfo = v;
break;
}
}
}
}
if (connectionInfo == null) {
WebProjectImpl project = getProjectById(projectId);
@@ -573,7 +598,7 @@ public class WebSession extends BaseWebSession
if (dataSource != null) {
connectionInfo = new WebConnectionInfo(this, dataSource);
synchronized (connections) {
connections.put(connectionID, connectionInfo);
connections.put(getConnectionId(dataSource), connectionInfo);
}
} else {
throw new DBWebException("Connection '" + connectionID + "' not found");
@@ -583,22 +608,22 @@ public class WebSession extends BaseWebSession
}
@Nullable
public WebConnectionInfo findWebConnectionInfo(String connectionID) {
public WebConnectionInfo findWebConnectionInfo(String projectId, String connectionId) {
synchronized (connections) {
return connections.get(connectionID);
return connections.get(getConnectionId(projectId, connectionId));
}
}
public void addConnection(WebConnectionInfo connectionInfo) {
synchronized (connections) {
connections.put(connectionInfo.getId(), connectionInfo);
connections.put(getConnectionId(connectionInfo.getDataSourceContainer()), connectionInfo);
}
}
public void removeConnection(WebConnectionInfo connectionInfo) {
connectionInfo.clearCache();
synchronized (connections) {
connections.remove(connectionInfo.getId());
connections.remove(getConnectionId(connectionInfo.getDataSourceContainer()));
}
}
@@ -619,7 +644,26 @@ public class WebSession extends BaseWebSession
super.close();
}
private void clearAuthTokens() throws DBException {
@Override
public void close(boolean clearTokens) {
try {
resetNavigationModel();
resetSessionCache();
} catch (Throwable e) {
log.error(e);
}
if (clearTokens) {
try {
clearAuthTokens();
} catch (Exception e) {
log.error("Error closing web session tokens");
}
}
this.userContext.setUser(null);
super.close(clearTokens);
}
private List<WebAuthInfo> clearAuthTokens() throws DBException {
ArrayList<WebAuthInfo> tokensCopy;
synchronized (authTokens) {
tokensCopy = new ArrayList<>(this.authTokens);
@@ -628,6 +672,7 @@ public class WebSession extends BaseWebSession
removeAuthInfo(ai);
}
resetAuthToken();
return tokensCopy;
}
public DBRProgressMonitor getProgressMonitor() {
@@ -764,8 +809,8 @@ public class WebSession extends BaseWebSession
public <T> T getAttribute(String name) {
synchronized (attributes) {
Object value = attributes.get(name);
if (value instanceof PersistentAttribute) {
value = ((PersistentAttribute) value).getValue();
if (value instanceof PersistentAttribute persistentAttribute) {
value = persistentAttribute.getValue();
}
return (T) value;
}
@@ -780,8 +825,8 @@ public class WebSession extends BaseWebSession
public <T> T getAttribute(String name, Function<T, T> creator, Function<T, T> disposer) {
synchronized (attributes) {
Object value = attributes.get(name);
if (value instanceof PersistentAttribute) {
value = ((PersistentAttribute) value).getValue();
if (value instanceof PersistentAttribute persistentAttribute) {
value = persistentAttribute.getValue();
}
if (value == null) {
value = creator.apply(null);
@@ -817,6 +862,14 @@ public class WebSession extends BaseWebSession
}
}
@Override
public List<SMAuthInfo> getAuthInfos() {
synchronized (authTokens) {
return authTokens.stream().map(WebAuthInfo::getAuthInfo).toList();
}
}
public List<WebAuthInfo> getAllAuthInfo() {
synchronized (authTokens) {
return new ArrayList<>(authTokens);
@@ -878,18 +931,23 @@ public class WebSession extends BaseWebSession
}
}
public void removeAuthInfo(String providerId) throws DBException {
public List<WebAuthInfo> removeAuthInfo(String providerId) throws DBException {
List<WebAuthInfo> oldInfo;
if (providerId == null) {
clearAuthTokens();
oldInfo = clearAuthTokens();
} else {
WebAuthInfo authInfo = getAuthInfo(providerId);
if (authInfo != null) {
removeAuthInfo(authInfo);
oldInfo = List.of(authInfo);
} else {
oldInfo = List.of();
}
}
if (authTokens.isEmpty()) {
resetUserState();
}
return oldInfo;
}
public List<DBACredentialsProvider> getContextCredentialsProviders() {
@@ -909,8 +967,9 @@ public class WebSession extends BaseWebSession
for (DBACredentialsProvider contextCredentialsProvider : getContextCredentialsProviders()) {
contextCredentialsProvider.provideAuthParameters(monitor, dataSourceContainer, configuration);
}
configuration.setRuntimeAttribute(RUNTIME_PARAM_AUTH_INFOS, getAllAuthInfo());
WebConnectionInfo webConnectionInfo = findWebConnectionInfo(dataSourceContainer.getId());
WebConnectionInfo webConnectionInfo = findWebConnectionInfo(dataSourceContainer.getProject().getId(), dataSourceContainer.getId());
if (webConnectionInfo != null) {
WebDataSourceUtils.saveCredentialsInDataSource(webConnectionInfo, dataSourceContainer, configuration);
}
@@ -926,7 +985,7 @@ public class WebSession extends BaseWebSession
.create();
credGson.fromJson(credGson.toJsonTree(configuration.getAuthProperties()), credentials.getClass());
configuration.getAuthModel().saveCredentials(dataSourceContainer, configuration, credentials);
configuration.getAuthModel().provideCredentials(dataSourceContainer, configuration, credentials);
} catch (DBException e) {
addSessionError(e);
log.error(e);
@@ -965,9 +1024,7 @@ public class WebSession extends BaseWebSession
private <T> boolean isAuthInfoInstanceOf(WebAuthInfo authInfo, Class<T> adapter) {
if (authInfo != null && authInfo.getAuthSession() != null) {
if (adapter.isInstance(authInfo.getAuthSession())) {
return true;
}
return adapter.isInstance(authInfo.getAuthSession());
}
return false;
}
@@ -1009,6 +1066,17 @@ public class WebSession extends BaseWebSession
return getWorkspace().getProjectById(projectId);
}
public WebProjectImpl getAccessibleProjectById(@Nullable String projectId) throws DBWebException {
WebProjectImpl project = null;
if (projectId != null) {
project = getWorkspace().getProjectById(projectId);
}
if (project == null) {
throw new DBWebException("Project not found: " + projectId);
}
return project;
}
public List<WebProjectImpl> getAccessibleProjects() {
return getWorkspace().getProjects();
}
@@ -1060,6 +1128,11 @@ public class WebSession extends BaseWebSession
return project.getFileSystemManager();
}
@NotNull
public DBPPreferenceStore getUserPreferenceStore() {
return getUserContext().getPreferenceStore();
}
private class SessionProgressMonitor extends BaseProgressMonitor {
@Override
public void beginTask(String name, int totalWork) {
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -164,6 +164,7 @@ public class WebSessionAuthProcessor {
authProviderDescriptor,
userIdentity,
authSession,
authInfo,
OffsetDateTime.now()
);
webAuthInfo.setAuthProviderConfigurationId(authConfiguration.getAuthProviderConfigurationId());
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,8 +18,8 @@ package io.cloudbeaver.model.session;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.websocket.event.WSProjectResourceEvent;
import org.jkiss.dbeaver.model.websocket.event.WSEvent;
import org.jkiss.dbeaver.model.websocket.event.WSProjectResourceEvent;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
@@ -0,0 +1,72 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model.session;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.impl.preferences.AbstractUserPreferenceStore;
import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import java.io.IOException;
import java.util.Map;
public class WebSessionPreferenceStore extends AbstractUserPreferenceStore {
public WebSessionPreferenceStore(
@NotNull DBPPreferenceStore parentStore
) {
super(parentStore);
}
@NotNull
public Map<String, Object> getCustomUserParameters() {
return userPreferences;
}
// to avoid redundant sm api call
public void updatePreferenceValues(@NotNull Map<String, Object> newValues) {
userPreferences.putAll(newValues);
}
@Override
protected void setUserPreference(String name, Object value) {
throw new RuntimeException("Not implemented");
}
@Override
public String getDefaultString(String name) {
return parentStore.getDefaultString(name);
}
@Override
public boolean isDefault(String name) {
return !userPreferences.containsKey(name) && parentStore.isDefault(name);
}
@Override
public boolean needsSaving() {
return false;
}
@Override
public void setToDefault(String name) {
throw new RuntimeException("Not implemented");
}
@Override
public void save() throws IOException {
throw new RuntimeException("Not implemented");
}
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,7 +22,6 @@ import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.app.DBPPlatform;
import org.jkiss.dbeaver.model.app.DBPProject;
import org.jkiss.dbeaver.model.app.DBPWorkspace;
import org.jkiss.dbeaver.model.auth.SMSessionContext;
import org.jkiss.dbeaver.model.impl.auth.SessionContextImpl;
import org.jkiss.dbeaver.model.rm.RMUtils;
import org.jkiss.dbeaver.runtime.DBWorkbench;
@@ -86,11 +85,13 @@ public class WebSessionWorkspace implements DBPWorkspace {
return accessibleProjects;
}
@Nullable
@Override
public DBPProject getActiveProject() {
return activeProject;
}
@Nullable
@Override
public WebProjectImpl getProject(@NotNull String projectName) {
for (WebProjectImpl project : accessibleProjects) {
@@ -103,7 +104,7 @@ public class WebSessionWorkspace implements DBPWorkspace {
@Nullable
@Override
public WebProjectImpl getProjectById(String projectId) {
public WebProjectImpl getProjectById(@NotNull String projectId) {
if (projectId == null) {
return activeProject;
}
@@ -117,21 +118,15 @@ public class WebSessionWorkspace implements DBPWorkspace {
@NotNull
@Override
public SMSessionContext getAuthContext() {
public SessionContextImpl getAuthContext() {
return workspaceAuthContext;
}
@Override
public void dispose() {
clearAuthData();
clearProjects();
}
void clearAuthData() {
workspaceAuthContext.close();
}
public void setActiveProject(DBPProject activeProject) {
this.activeProject = (WebProjectImpl) activeProject;
}
@@ -155,12 +150,12 @@ public class WebSessionWorkspace implements DBPWorkspace {
}
@Override
public boolean hasRealmPermission(String permission) {
public boolean hasRealmPermission(@NotNull String permission) {
return false;
}
@Override
public boolean supportsRealmFeature(String feature) {
public boolean supportsRealmFeature(@NotNull String feature) {
return false;
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,12 +36,10 @@ import org.jkiss.dbeaver.model.secret.DBSSecretController;
import org.jkiss.dbeaver.model.security.SMAdminController;
import org.jkiss.dbeaver.model.security.SMController;
import org.jkiss.dbeaver.model.security.user.SMAuthPermissions;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.utils.CommonUtils;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -66,6 +64,7 @@ public class WebUserContext implements SMCredentialsProvider {
private RMController rmController;
private DBFileController fileController;
private Set<String> accessibleProjectIds = new HashSet<>();
private final WebSessionPreferenceStore preferenceStore;
public WebUserContext(WebApplication application, DBPWorkspace workspace) throws DBException {
this.application = application;
@@ -73,6 +72,7 @@ public class WebUserContext implements SMCredentialsProvider {
this.securityController = application.createSecurityController(this);
this.rmController = application.createResourceController(this, workspace);
this.fileController = application.createFileController(this);
this.preferenceStore = new WebSessionPreferenceStore(DBWorkbench.getPlatform().getPreferenceStore());
setUserPermissions(getDefaultPermissions());
}
@@ -116,7 +116,13 @@ public class WebUserContext implements SMCredentialsProvider {
setRefreshToken(smRefreshToken);
setUserPermissions(smAuthPermissions.getPermissions());
this.adminSecurityController = application.getAdminSecurityController(this);
this.rmController = application.createResourceController(this, workspace);
if (isSessionChanged) {
if (smAuthPermissions.getUserId() != null) {
this.preferenceStore.updateAllUserPreferences(securityController.getCurrentUserParameters());
} else {
this.preferenceStore.updateAllUserPreferences(Map.of());
}
this.smSessionId = smAuthPermissions.getSessionId();
setUser(smAuthPermissions.getUserId() == null ? null : new WebUser(securityController.getCurrentUser()));
refreshAccessibleProjects();
@@ -161,7 +167,7 @@ public class WebUserContext implements SMCredentialsProvider {
this.user = null;
this.securityController = application.createSecurityController(this);
this.adminSecurityController = null;
this.secretController = application.getSecretController(this);
this.secretController = null;
}
@NotNull
@@ -220,7 +226,10 @@ public class WebUserContext implements SMCredentialsProvider {
this.userPermissions = permissions;
}
public DBSSecretController getSecretController() {
public DBSSecretController getSecretController() throws DBException {
if (this.securityController == null) {
this.secretController = application.getSecretController(this, workspace.getAuthContext());
}
return secretController;
}
@@ -248,4 +257,8 @@ public class WebUserContext implements SMCredentialsProvider {
private void setRefreshToken(@Nullable String refreshToken) {
this.refreshToken = refreshToken;
}
public WebSessionPreferenceStore getPreferenceStore() {
return preferenceStore;
}
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2023 DBeaver Corp and others
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

Some files were not shown because too many files have changed in this diff Show More