Compare commits

...
290 Commits
Author SHA1 Message Date
Alexander Skoblikovandnaumov 6416486513 Cb 4460 shared query history for the team (#2598)
* CB-5067 team supervisor

* CB-4460 extended team members info api

* CB-5118 support supervisor role

* CB-4460 api fix

* CB-4460 change role name

* CB-4460 gql fix

* CB-4460 fix unexpected team role modification

* CB-4460 fix unexpected team role modification

* CB-4460 fix unexpected team role modification

* CB-4460 fix anonymous preferences

* CB-4460 adjust compare fn


---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
2024-05-14 17:30:26 +00:00
AinurandDenisSinelnikov 6061ec340c CB-5127 web application instance id fix (#2603)
Co-authored-by: DenisSinelnikov <142215442+DenisSinelnikov@users.noreply.github.com>
2024-05-14 19:29:09 +02:00
b40646e69b Cb 4931 auth dialog focus (#2602)
* CB-4931 focus first child of the auth form

* CB-4931 focus dialog from inner component

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-05-14 19:27:09 +02:00
serge-rider 003a89be57 24.0.5 version bump 2024-05-14 18:37:03 +02:00
DenisSinelnikov bbd296f197 CB-5007. Fixed import to mongo (#2612)
* CB-5007. Fixed import to mongo

* CB-5007. Fixed checkstyle
2024-05-14 16:18:08 +00:00
AlexeyandEvgenia Bezborodova 39bfc54ca5 CB-4698 fix: limit grid inline editor (#2608)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-05-14 19:03:52 +03:00
bac47d20ce CB-5070 refactor: forms design (#2607)
* CB-5070 refactor: forms design

* Merge remote-tracking branch 'origin/devel' into refactor/cb-5070/forms-design

* CB-5070 fix: html semantics

* CB-5070 fix: table header styles

* CB-5070 fix: table header styles

---------

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-05-14 19:03:11 +03:00
alexandDaria Marutkina 5fce0a544b CB-5085 make errors focusable (#2585)
* CB-5085 make errors focusable

* CB-5085 add lazy import

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-05-14 16:36:24 +03:00
833dae58ce CB-5060 add beta features config param (#2599)
* CB-5109 add beta features config param

* CB-5109 rename param

* CB-5060 feat: disable beta features

* CB-5109 add param to config file

---------

Co-authored-by: Alexey <wrouds@gmail.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-05-14 09:31:24 +00:00
Alexander SkoblikovandEvgenia Bezborodova 12bc21257d CB-5128 do not store jetty sessions cache in files (#2600)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-05-14 09:42:42 +02:00
d280171b97 CB-4978 feat: handle app update (#2579)
* CB-4978 feat: handle app update

* CB-4978 fix: app loading status info

* feat: async module loading and preload api

* chore: disable SW in dev env

* CB-4978 feat: improve precaching

* CB-4978 fix: split style chunks in two file

* CB-4978 fix: App rebinding

* CB-4978 fix: styles specificity

* CB-4978 fix: app loading

* CB-4978 fix: styles specificity

* CB-4978 fix: flickering bad positioned loader

* CB-4978 fix: styles specificity

* CB-4978 fix: table presentation scrolls

* CB-4978 chore: add extra error logging

* CB-4978 chore: add extra error logging

* CB-4978 fix: toolbar scrolling

* CB-4978 fix: log viewer empty message

* CB-4978 fix: cell styles

* CB-4978 fix: tabs styles

* CB-4978 fix: tests

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-05-14 09:16:46 +03:00
alexandDaria Marutkina c8ec5716b8 CB-4931 make export and import dialog focusable (#2584)
* CB-4931 make export and import dialog focusable

* CB-4931 always focus the dialog

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-05-10 16:51:08 +03:00
serge-rider 7045575d95 dbeaver/pro#2800 Code style 2024-05-10 14:57:48 +02:00
AlexeyandDaria Marutkina bdea460218 CB-4837 fix: show in value panel menu button (#2596)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-05-09 13:19:08 +03:00
674c522d55 Cb 5076 remove reshadow leftovers (#2582)
* 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

* CB-5076 some reshadow

* CB-5076 makes auto refresh reshadowless

* CB-5076 removes reshadow from result set grouping presentation

* CB-5076 makes data grid reshadowless

* CB-5076 makes object viewer table reshadowless

* CB-5076 makes value panel GIS presentation reshadowless

* CB-5076 removes reshadow's all dependencies

* CB-5076 removes ComponentStyles from tsx files

* CB-5076 fixes shortcut dialog titles paddings

* CB-5076 federated auth providers has more space for providers list container

* CB-5076 removes unneeded global from base scss

* CB-5076 import base styles as regular styles (not moduled)

* CB-5076 fix: styles

* CB-5076 chore: add packageManager

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Aleksei Potsetsuev <wrouds@gmail.com>
2024-05-09 13:17:13 +03:00
Alexander Skoblikov d0933b2b17 CB-5050 query translator unit tests (#2590)
* CB-5050 query translator unit tests

* CB-5050 mysql UUID column

* CB-5050 update mysql dialect tests
2024-05-08 19:03:11 +00:00
alexandEvgenia Bezborodova 56143132d6 CB-5077 adjust contrast ratio (#2583)
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-05-08 13:56:02 +03:00
Alexander Skoblikov 639f42fa1c CB-4922 bump duck db driver version (#2594) 2024-05-08 09:32:17 +00:00
Alexander Skoblikov c0bbe7fdc5 remove gson map usage (#2593) 2024-05-07 13:29:01 +00:00
Daria Marutkina 64103bc369 Merge pull request #2592 from dbeaver/dariamarutkina-patch-1
CB_2404 chore: update README
2024-05-07 09:49:58 +02:00
Daria Marutkina 87e7f774e9 CB_2404 chore: update README 2024-05-07 09:49:46 +02:00
Ainurandkseniaguzeeva 00cb84c71d CB-5029 close all sessions with event (#2577)
* CB-5029 close all sessions with event

* CB-5029 fixes after review

* CB-5029 remove mac address from instance

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-04-30 10:38:29 +00:00
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
3277 changed files with 38797 additions and 24427 deletions
+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.600.v20231106-1826.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.600.v20231106-1826.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",
+2 -4
View File
@@ -5,13 +5,11 @@
"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": [
+26 -37
View File
@@ -22,43 +22,32 @@ You can see live demo of CloudBeaver here: https://demo.cloudbeaver.io
## Changelog
### 23.3.1, 2023-12-25
- Performance:
- Upgraded to Jetty 11, delivering improved performance, enhanced features, and better alignment with the latest Java specifications.
- Resource management:
- Read-only scripts now have a padlock icon.
- UX improvement:
- Added validation for mandatory fields in all forms for creating and editing entities.
- Driver management:
- Apache Derby driver has been removed because of the vulnerability issues.
- Many small bug fixes, enhancements, and improvements have been made
### 24.0.4. 2024-05-06
- Added the ability to stop the process of file upload in the table;
- Row count calculation in the grid can be cancelled for Data Editor and SQL Editor;
- Added the ability to set null values for BLOB and GIS data via the cell's context menu in the table;
- Oracle driver has been updated to version 23.2.0.0.0;
- SQLite driver has been updated to version 3.44.1.0;
- Different bug fixes and enhancements have been made.
### Changes since 23.2.0:
### 24.0.3. 2024-04-22
- Unauthorized access vulnerability was fixed;
- 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.
- Security:
- Unauthorized access vulnerability was fixed;
- All embedded drivers are disabled by default. Administrators can re-enable them in the Server configuration.
- Access Management:
- Administrators have gained the ability to permanently delete users and their data.
- Authorization:
- The SSL option is available for establishing a connection in SQL Server.
- Connections:
- The 'Save credentials' checkbox has been removed from a template creating form as credentials are not stored in templates.
- SQL Editor:
- Support for using custom delimiters has been added in MySQL;
- The Output tab has been implemented, which includes warnings, info, and notices generated by the database when executing user queries;
- Fixed an issue in the SQL editor where it was impossible to switch the active schema when working with Oracle databases;
- Added ability to select shared connections for private scripts;
- Private connections can be chosen for shared scripts, but this change won’t be saved to the script file.
- Data Editor:
- Scrollbars have been made theme-independent;
- Added the ability to edit binary values in a table;
- Added the ability to count the total number of entries in the table.
- Driver management:
- Updated the version of the Clickhouse driver to 0.4.6.
- Many small bug fixes, enhancements, and improvements have been made
### Old CloudBeaver releases
You can find information about earlier releases on the CloudBeaver wiki https://github.com/dbeaver/cloudbeaver/wiki/Releases.
### 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.
@@ -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: 20
},
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,
@@ -23,11 +37,17 @@
enableBruteForceProtection: "${CLOUDBEAVER_BRUTE_FORCE_PROTECTION_ENABLED:true}",
maxFailedLogin: "${CLOUDBEAVER_MAX_FAILED_LOGINS:10}",
minimumLoginTimeout: "${CLOUDBEAVER_MINIMUM_LOGIN_TIMEOUT:1}",
blockLoginPeriod: "${CLOUDBEAVER_BLOCK_PERIOD:300}"
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: {
@@ -35,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,
@@ -71,6 +94,9 @@
"h2:h2_embedded",
"h2:h2_embedded_v2",
"clickhouse:yandex_clickhouse"
],
disabledBetaFeatures: [
]
}
@@ -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,
@@ -61,6 +89,9 @@
"h2:h2_embedded",
"h2:h2_embedded_v2",
"clickhouse:yandex_clickhouse"
],
disabledBetaFeatures: [
]
}
+3 -1
View File
@@ -23,7 +23,9 @@ echo "Pull cloudbeaver platform"
cd ../..
echo "Pull dbeaver platform"
[ ! -d dbeaver ] && git clone https://github.com/dbeaver/dbeaver.git
[ ! -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
+1 -1
View File
@@ -18,4 +18,4 @@ 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."
echo "Cloudbeaver is ready. Run run-server.sh in cloudbeaver folder to start the server."
+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
+26 -28
View File
@@ -1,54 +1,52 @@
FROM alpine:3.19
FROM ubuntu:23.10
MAINTAINER DBeaver Corp, devops@dbeaver.com
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
RUN set -eux; \
apk add --no-cache \
apt-get update; \
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
fontconfig ttf-dejavu \
# utilities for keeping Alpine and OpenJDK CA certificates in sync
fontconfig \
# utilities for keeping Ubuntu and OpenJDK CA certificates in sync
# https://github.com/adoptium/containers/issues/293
ca-certificates p11-kit-trust \
# locales ensures proper character encoding and locale-specific behaviors using en_US.UTF-8
musl-locales musl-locales-lang \
ca-certificates p11-kit \
# jlink --strip-debug on 13+ needs objcopy: https://github.com/docker-library/openjdk/issues/351
# Error: java.io.IOException: Cannot run program "objcopy": error=2, No such file or directory
binutils \
tzdata \
bash \
# locales ensures proper character encoding and locale-specific behaviors using en_US.UTF-8
locales \
nano \
curl \
; \
rm -rf /var/cache/apk/*
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen; \
locale-gen en_US.UTF-8; \
rm -rf /var/lib/apt/lists/*
ENV JAVA_VERSION jdk-17.0.9+9
RUN wget https://github.com/xerial/sqlite-jdbc/releases/download/3.44.1.0/sqlite-jdbc-3.44.1.0.jar && \
unzip -j sqlite-jdbc-*.jar "org/sqlite/native/$(uname -s)/$(uname -m)/libsqlitejdbc.so" && \
mv libsqlitejdbc.so /usr/lib && \
rm -rf sqlite-jdbc-*.jar
ENV LANG=en_US.UTF-8
ENV JAVA_HOME=/opt/java/openjdk
ENV JAVA_HOME=/opt/java/openjdk
COPY --from=eclipse-temurin:17-alpine $JAVA_HOME $JAVA_HOME
COPY --from=eclipse-temurin:17 $JAVA_HOME $JAVA_HOME
ENV PATH="${JAVA_HOME}/bin:${PATH}"
RUN set -eux; \
# https://github.com/docker-library/openjdk/issues/331#issuecomment-498834472
find "$JAVA_HOME/lib" -name '*.so' -exec dirname '{}' ';' | sort -u > /etc/ld.so.conf.d/docker-openjdk.conf; \
ldconfig; \
# https://github.com/docker-library/openjdk/issues/212#issuecomment-420979840
# https://openjdk.java.net/jeps/341
java -Xshare:dump;
### Patch java security
COPY java.security* ${JAVA_HOME}/conf/security/java.security
COPY cloudbeaver /opt/cloudbeaver
RUN find /opt/cloudbeaver -type d -exec chmod 775 {} \;
WORKDIR /opt/cloudbeaver/
EXPOSE 8978
RUN find /opt/cloudbeaver -type d -exec chmod 775 {} \;
WORKDIR /opt/cloudbeaver/
ENTRYPOINT ["./run-server.sh"]
+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.44.qualifier
Bundle-Release-Date: 20240108
Bundle-Version: 1.0.53.qualifier
Bundle-Release-Date: 20240520
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
+1 -1
View File
@@ -10,7 +10,7 @@
<relativePath>../</relativePath>
</parent>
<artifactId>io.cloudbeaver.model</artifactId>
<version>1.0.44-SNAPSHOT</version>
<version>1.0.53-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.
@@ -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;
}
}
@@ -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;
@@ -242,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,16 +29,18 @@ 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;
protected String[] disabledBetaFeatures;
public BaseWebAppConfiguration() {
this.plugins = new LinkedHashMap<>();
this.defaultUserTeam = DEFAULT_APP_ANONYMOUS_TEAM_NAME;
this.resourceManagerEnabled = true;
this.enabledFeatures = null;
this.disabledBetaFeatures = new String[0];
this.showReadOnlyConnectionInfo = false;
}
@@ -47,6 +49,7 @@ public abstract class BaseWebAppConfiguration implements WebAppConfiguration {
this.defaultUserTeam = src.defaultUserTeam;
this.resourceManagerEnabled = src.resourceManagerEnabled;
this.enabledFeatures = src.enabledFeatures;
this.disabledBetaFeatures = src.disabledBetaFeatures;
this.showReadOnlyConnectionInfo = src.showReadOnlyConnectionInfo;
}
@@ -105,4 +108,8 @@ public abstract class BaseWebAppConfiguration implements WebAppConfiguration {
public boolean isShowReadOnlyConnectionInfo() {
return showReadOnlyConnectionInfo;
}
public String[] getDisabledBetaFeatures() {
return disabledBetaFeatures;
}
}
@@ -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;
@@ -37,12 +35,12 @@ 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;
import org.jkiss.dbeaver.model.rm.RMProject;
import org.jkiss.dbeaver.model.secret.DBSSecretController;
import org.jkiss.dbeaver.model.websocket.event.WSEventController;
import org.jkiss.dbeaver.registry.BaseApplicationImpl;
import org.jkiss.dbeaver.registry.BaseWorkspaceImpl;
import org.jkiss.dbeaver.runtime.IVariableResolver;
import org.jkiss.dbeaver.utils.GeneralUtils;
import org.jkiss.dbeaver.utils.RuntimeUtils;
@@ -66,6 +64,8 @@ public abstract class BaseWebApplication extends BaseApplicationImpl implements
private static final Log log = Log.getLog(BaseWebApplication.class);
private String instanceId;
@NotNull
@Override
public DBPWorkspace createWorkspace(@NotNull DBPPlatform platform, @NotNull IWorkspace eclipseWorkspace) {
@@ -102,8 +102,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();
@@ -120,13 +119,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
@@ -153,7 +152,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();
@@ -179,8 +178,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,
@@ -207,7 +204,7 @@ public abstract class BaseWebApplication extends BaseApplicationImpl implements
return VoidSecretController.INSTANCE;
}
protected static Map<String, Object> getServerConfigProps(Map<String, Object> configProps) {
public static Map<String, Object> getServerConfigProps(Map<String, Object> configProps) {
return JSONUtils.getObject(configProps, "server");
}
@@ -247,14 +244,17 @@ public abstract class BaseWebApplication extends BaseApplicationImpl implements
protected abstract void startServer() throws DBException;
@Override
public String getApplicationInstanceId() throws DBException {
try {
byte[] macAddress = RuntimeUtils.getLocalMacAddress();
String appId = ApplicationRegistry.getInstance().getApplication().getId();
return appId + "_" + CommonUtils.toHexString(macAddress) + getServerPort();
} catch (Exception e) {
throw new DBException("Error during generation instance id generation", e);
public synchronized String getApplicationInstanceId() throws DBException {
if (instanceId == null) {
try {
byte[] macAddress = RuntimeUtils.getLocalMacAddress();
// workspace id from is read from property file
instanceId = BaseWorkspaceImpl.readWorkspaceIdProperty() + "_" + CommonUtils.toHexString(macAddress);
} catch (Exception e) {
throw new DBException("Error during generation instance id generation", e);
}
}
return instanceId;
}
public String getApplicationId() {
@@ -270,11 +270,7 @@ public abstract class BaseWebApplication extends BaseApplicationImpl implements
return null;
}
protected Gson getGson() {
return getGsonBuilder().create();
}
protected abstract GsonBuilder getGsonBuilder();
public abstract WebServerConfigurationController getServerConfigurationController();
@Override
public boolean isEnvironmentVariablesAccessible() {
@@ -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.
@@ -21,8 +21,13 @@ 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.
@@ -37,15 +42,21 @@ public class VoidSecretController implements DBSSecretController, DBSSecretContr
@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() {
}
@@ -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.
@@ -43,6 +43,8 @@ public interface WebApplication extends DBPApplication {
WebAppConfiguration getAppConfiguration();
WebServerConfiguration getServerConfiguration();
Path getDataDirectory(boolean create);
Path getWorkspaceDirectory();
@@ -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;
@@ -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;
@@ -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;
@@ -154,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.
@@ -1155,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);
@@ -171,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) {
@@ -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,12 +58,14 @@ public class WebAuthInfo implements SMSessionPrincipal {
@NotNull WebAuthProviderDescriptor authProvider,
@NotNull DBWUserIdentity userIdentity,
@NotNull SMSession authSession,
@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;
}
@@ -120,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 {
@@ -131,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.
@@ -34,8 +34,6 @@ import io.cloudbeaver.utils.CBModelConstants;
import io.cloudbeaver.utils.WebAppUtils;
import io.cloudbeaver.utils.WebDataSourceUtils;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -58,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;
@@ -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) {
@@ -275,7 +283,7 @@ public class WebSession extends BaseWebSession
switch (type) {
case DATASOURCE_CREATED -> {
WebConnectionInfo connectionInfo = new WebConnectionInfo(this, ds);
this.connections.put(connectionInfo.getId(), connectionInfo);
this.connections.put(getConnectionId(ds), connectionInfo);
sendDataSourceUpdatedEvent = true;
}
case DATASOURCE_UPDATED -> // if settings were changed we need to send event
@@ -285,7 +293,7 @@ public class WebSession extends BaseWebSession
if (registry instanceof DBPDataSourceRegistryCache dsrc) {
dsrc.removeDataSourceFromList(ds);
}
this.connections.remove(ds.getId());
this.connections.remove(getConnectionId(ds));
sendDataSourceUpdatedEvent = true;
}
default -> {
@@ -295,6 +303,16 @@ public class WebSession extends BaseWebSession
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();
@@ -465,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));
}
@@ -476,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();
@@ -517,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()) {
@@ -546,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) {
@@ -555,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);
@@ -568,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");
@@ -578,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()));
}
}
@@ -614,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);
@@ -623,6 +672,7 @@ public class WebSession extends BaseWebSession
removeAuthInfo(ai);
}
resetAuthToken();
return tokensCopy;
}
public DBRProgressMonitor getProgressMonitor() {
@@ -812,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);
@@ -873,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() {
@@ -904,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);
}
@@ -921,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);
@@ -1002,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();
}
@@ -1053,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.
@@ -85,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) {
@@ -148,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();
@@ -251,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.
@@ -70,6 +70,7 @@ public class WebUser {
return Collections.emptyMap();
}
@NotNull
public String[] getTeams() {
return user.getUserTeams();
}
@@ -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.
@@ -18,6 +18,7 @@ package io.cloudbeaver.registry;
import io.cloudbeaver.auth.CBAuthConstants;
import io.cloudbeaver.auth.SMAuthProviderFederated;
import io.cloudbeaver.auth.SMSignOutLinkProvider;
import io.cloudbeaver.utils.WebAppUtils;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
@@ -85,8 +86,8 @@ public class WebAuthProviderConfiguration {
@Property
public String getSignOutLink() throws DBException {
SMAuthProvider<?> instance = providerDescriptor.getInstance();
return instance instanceof SMAuthProviderFederated
? ((SMAuthProviderFederated) instance).getSignOutLink(getId(), config.getParameters())
return instance instanceof SMSignOutLinkProvider
? ((SMSignOutLinkProvider) instance).getCommonSignOutLink(getId(), config.getParameters())
: 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.
@@ -49,13 +49,14 @@ public class WebAuthProviderDescriptor extends AbstractDescriptor {
private final Map<SMSubjectType, List<DBPPropertyDescriptor>> metaParameters = new HashMap<>();
private SMAuthProvider<?> instance;
private final DBPImage icon;
private final Map<String, PropertyDescriptor> configurationParameters = new LinkedHashMap<>();
private final Map<String, WebAuthProviderProperty> configurationParameters = new LinkedHashMap<>();
private final List<SMAuthCredentialsProfile> credentialProfiles = new ArrayList<>();
private final boolean configurable;
private final boolean trusted;
private final boolean isPrivate;
private final String[] requiredFeatures;
private final boolean isRequired;
private final String[] types;
public WebAuthProviderDescriptor(IConfigurationElement cfg) {
super(cfg);
@@ -68,13 +69,9 @@ public class WebAuthProviderDescriptor extends AbstractDescriptor {
this.isRequired = CommonUtils.toBoolean(cfg.getAttribute("required"));
for (IConfigurationElement cfgElement : cfg.getChildren("configuration")) {
for (IConfigurationElement propGroup : ArrayUtils.safeArray(cfgElement.getChildren(PropertyDescriptor.TAG_PROPERTY_GROUP))) {
String category = propGroup.getAttribute(PropertyDescriptor.ATTR_LABEL);
IConfigurationElement[] propElements = propGroup.getChildren(PropertyDescriptor.TAG_PROPERTY);
for (IConfigurationElement prop : propElements) {
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(category, prop);
configurationParameters.put(CommonUtils.toString(propertyDescriptor.getId()), propertyDescriptor);
}
List<WebAuthProviderProperty> properties = WebAuthProviderRegistry.readProperties(cfgElement);
for (WebAuthProviderProperty property : properties) {
configurationParameters.put(CommonUtils.toString(property.getId()), property);
}
}
for (IConfigurationElement credElement : cfg.getChildren("credentials")) {
@@ -90,11 +87,10 @@ public class WebAuthProviderDescriptor extends AbstractDescriptor {
}
String rfList = cfg.getAttribute("requiredFeatures");
if (!CommonUtils.isEmpty(rfList)) {
requiredFeatures = rfList.split(",");
} else {
requiredFeatures = null;
}
requiredFeatures = CommonUtils.isEmpty(rfList) ? null : rfList.split(",");
String typesAttr = cfg.getAttribute("categories");
this.types = CommonUtils.isEmpty(typesAttr) ? new String[0] : typesAttr.split(",");
}
@NotNull
@@ -130,7 +126,7 @@ public class WebAuthProviderDescriptor extends AbstractDescriptor {
return isRequired;
}
public List<PropertyDescriptor> getConfigurationParameters() {
public List<WebAuthProviderProperty> getConfigurationParameters() {
return new ArrayList<>(configurationParameters.values());
}
@@ -198,4 +194,7 @@ public class WebAuthProviderDescriptor extends AbstractDescriptor {
return metaParameters.get(subjectType);
}
public String[] getTypes() {
return types;
}
}
@@ -0,0 +1,45 @@
/*
* 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.registry;
import org.eclipse.core.runtime.IConfigurationElement;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.impl.PropertyDescriptor;
public class WebAuthProviderProperty extends PropertyDescriptor {
private final String[] requiredFeatures;
@Nullable
private final String type;
public WebAuthProviderProperty(String category, IConfigurationElement config) {
super(category, config);
String featuresAttr = config.getAttribute("requiredFeatures");
this.requiredFeatures = featuresAttr == null ? new String[0] : featuresAttr.split(",");
this.type = config.getAttribute("type");
}
@NotNull
public String[] getRequiredFeatures() {
return requiredFeatures;
}
@Nullable
public String getType() {
return type;
}
}

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