Commit Graph

169 Commits (master)

Author SHA1 Message Date
Rohit Bhati 814250aade
Added role-based restrictions for editing server connections. #1947 2025-06-10 12:19:41 +05:30
Rohit Bhati db5943bd8f
Add a new permission to allow disabling "Change Password" feature for a pgAdmin role. #1926 2025-06-03 16:20:30 +05:30
Aditya Toshniwal e8cb962890 Add Cache-Control no-cache,no-store,must-revalidate header to dynamically generated utils.js file. #3688 2025-04-16 11:23:35 +05:30
Aditya Toshniwal 7d8a915ee0
Add support for custom roles and role permissions management in pgAdmin. #7310 2025-04-15 11:25:31 +05:30
Aditya Toshniwal f98a74b526 Fixed an issue where the user management tab is not opening in the classic layout. #8651 2025-04-14 13:32:05 +05:30
Aditya Toshniwal 6b9f002366 Fixed an issue where user management tab was not focussed when opened from a non default workspace. #8574 2025-03-28 15:31:51 +05:30
Aditya Toshniwal 82c5febde6
Font family should fallback to Source Code Pro if not valid. #392
Update user management docs.
2025-03-27 11:03:39 +05:30
Aditya Toshniwal 9ab451e163
Open user management in a separate tab instead of a dialog to enhance UI/UX. #8574 2025-03-25 12:33:49 +05:30
Yogesh Mahajan b2669930f5
Ensure that modal dialogs are not triggered more than once to avoid duplicates. #8316 2025-03-18 15:58:16 +05:30
Akshay Joshi 96128f6a15 1) Enable the ability to close the 'Welcome' tab in the Query Tool/PSQL Workspace. #8436
2) Fixed an issue where the User Management and Change Password dialogs were hidden when selecting a menu while a workspace other than 'Default' was active. #8418
3) Revert the change of OS from Ubuntu 22.04 to 24.04 for github action failure.
2025-02-17 18:28:56 +05:30
Akshay Joshi 964d211260 Copyright updated for 2025 2025-01-01 11:26:42 +05:30
Akshay Joshi fe6e21a08b
Enhanced pgAdmin 4 with support for Workspace layouts. #7708 2024-12-16 14:52:56 +05:30
Ashesh Vashi 1f53baee8f
Fixed the dynamic column updation in the Unique & Primary Keys while creating a table.
* Updated the columns for the unique and primary keys while creating a table.
Use the 'editable' option for a Cell instead of 'disabled'.

* Don't need to define the hidden member as fields in GridHeaderSchema

* Updated the columns for the exclusion constraints while creating a
 table.

* Signaled the relevant field, when column options have changed, for all
the children of a table.

* Use current snapshot of data for the GrigFormHeadeer

* Fixed the styling for the search input box

* Don't check for the 'colOptions.editable' flag, as it could be
indirect call as well.
2024-09-19 18:57:09 +05:30
Ashesh Vashi 0d39e791c9
Fixed the import-export 'Not null columns' and User Management issue #7884 2024-09-16 13:12:41 +05:30
Ashesh Vashi 5e96f0fd61
Fixes the Variable Schema UI issues and InlineView bug reported in #7884
* Show the icon for the 'Reset' button. (Reference #7884)

* Reload the server list after connecting to a server in the 'New
connection' dialog (QueryTool). (Reference: #7884)

* Pass the grid path during the bulk update (click on a radio action)

* Don't assign the cell value to the 'rowValue' variable.

* Don't rely on the 'optionsLoaded' for setting the variable types as it
is loaded asynchronously, and variable types data may not be available
while rendering the 'value' cell. (Fixes #7884)

* Fixed a type while checking for the 'inline-group'. fixes (#7884)

* 'vnameOptions' can be a Promise function too, hence - taken care accrodingly.

* Introduced a parameter 'reloadOnDepChanges' in the BaseSchemaUI field
to force reload the control on value change for one of the
dependencies.

* Reload on the components in case of dependent value changes.

* Introduced 'useSchemaStateSubscriber', which generates a state
subscriber mananager instance. It helps multiple subscribers in a
single control as we could have multiple subscribe within a control.
(For example - value, options, errors, etc).

* Fixed all the issues reported (#7884)
2024-09-16 00:04:37 +05:30
Ashesh Vashi e9af0c3226
Improved the extendability of the SchemaView and DataGridView. (#7876)
Restructured these modules for ease of maintenance and apply the single
responsibility principle (wherever applicable).

* SchemaView

 - Split the code based on the functionality and responsibility.
 - Introduced a new View 'InlineView' instead of using the
   'nextInline' configuration of the fields to have a better, and
   manageable view.
 - Using the separate class 'SchemaState' for managing the data and
   states of the SchemaView (separated from the 'useSchemaState'
   custom hook).
 - Introduced three new custom hooks 'useFieldValue',
   'useFieldOptions', 'useFieldError' for the individual control to
   use for each Schema Field.
 - Don't pass value as the parameter props, and let the
   'useFieldValue' and other custom hooks to decide, whether to
   rerender the control itself or the whole dialog/view. (single
   responsibility principle)
 - Introduced a new data store with a subscription facility.
 - Moving the field metadata (option) evaluation to a separate place
   for better management, and each option can be defined for a
   particular kind of field (for example - collection, row, cell,
   general, etc).
 - Allow to provide custom control for all kind of Schema field.

* DataGridView

 - Same as SchemaView, split the DataGridView call into smaller,
   manageable chunks. (For example - grid, row, mappedCell, etc).
 - Use context based approach for providing the row and table data
   instead of passing them as parameters to every component
   separately.
 - Have a facility to extend this feature separately in future.
   (for example - selectable cell, column grouping, etc.)
 - Separated the features like deletable, editable, reorder,
   expandable etc. cells using the above feature support.
 - Added ability to provide the CustomHeader, and CustomRow through the
   Schema field, which will extend the ability to customize better.
 - Removed the 'DataGridViewWithHeaderForm' as it has been achieved
   through providing 'CustomHeader', and also introduced
   'DataGridFormHeader' (a custom header) to achieve the same feature
   as 'DataGridViewWithHeaderForm'.
2024-09-09 14:27:31 +05:30
Aditya Toshniwal 47fcf87ae4 Update JS and Python packages 2024-08-22 17:20:50 +05:30
Aditya Toshniwal 760e38293c Fix issues found during Electron testing. #7494
Fix application crash when using users dialog. #7607
2024-07-08 19:24:29 +05:30
Aditya Toshniwal 3bb9f0ba8c
Remove support for Python 3.7 as Debian 10 is EOL. 2024-07-01 12:39:12 +05:30
Aditya Toshniwal feb3093c6d
Automatically apply virtualization in the DataGridView of SchemaView if the schema contains only one collection. #7607 2024-06-27 13:21:18 +05:30
Akshay Joshi 6984e97f8d Use correct for loop syntax. 2024-06-19 13:15:45 +05:30
Akshay Joshi 2b04f3ca1d Fixed incorrect handling of the code smell for the reject API call 2024-06-17 18:22:38 +05:30
Yogesh Mahajan b0e7847962
Fixed bugs found while testing makeStyles JSS changes. #7363 2024-06-17 15:45:40 +05:30
Akshay Joshi dea5335ce5 Fixed the following SonarQube code smells:
1) Do not use the Array index in keys.
2) Import from the same module should be merged.
3) Mutable variables should not be exported.
4) Variables should not be initialized to undefined.
5) startswith or endswith method should be used.
6) Unwrap this unnecessarily grouped subpattern.

Additionally, addressed many other SonarQube rules.
2024-06-12 18:09:06 +05:30
Aditya Toshniwal 056aff4742 Revert the changes done for removing support for Python 3.7 2024-06-12 16:23:27 +05:30
Akshay Joshi 8857f0d179 Fix SonarQube code smells:
1) String literals should not be duplicated.
2) Prefer using an optional chain expression instead, as it's more concise and easier to read.
3) Expected the Promise rejection reason to be an Error.
2024-06-10 18:04:32 +05:30
Aditya Toshniwal de712b0805 - Update JS packages.
- Remove support for Python 3.7 as Debian 10 is EOL.
2024-06-07 14:17:22 +05:30
Yogesh Mahajan cc999ae5a5
Remove the usage of MUI makeStyles as it doesn't support React 18. #7363 2024-06-06 17:13:12 +05:30
Khushboo Vashi f66bd4bcfb Remove the use of is_normalized function for Python 3.7. 2024-06-05 14:11:59 +05:30
Khushboo Vashi 24aefd2c7a
Fix an issue where user authentication fails with special characters in password. #5785 2024-05-31 11:22:36 +05:30
Aditya Toshniwal dd45f06d50
Added support for viewing PGD Clusters. #7215 2024-05-20 16:54:49 +05:30
Aditya Toshniwal 5ec6faff13
Upgrade react-table from v7 to v8. #7419 2024-05-07 16:31:04 +05:30
Khushboo Vashi f4761f55f7 Fixed Multi-Factor Authentication bypass vulnerability (CVE-2024-4215). #7425 2024-04-29 13:41:02 +05:30
Yogesh Mahajan 102e0a9839
- Update MUI v4 to v5
- Remove the SCSS dependency completely and use MUI for theming.
- Update - date-fns, @date-io, notistack. Remove - popper.js, sass-loader.
- Cleanup webpack config.
- Port PSQL tool to use MUI themes instead of SCSS theme.
- Theme change will reflect realtime without refreshing pgAdmin.
2024-04-09 08:21:14 +05:30
Akshay Joshi edec9adbfb
Fixed SonarQube code smell 'Unnecessary use of boolean literals in conditional expression'. 2024-04-08 17:19:51 +05:30
Khushboo Vashi fdaedacf40
Fixed multiple CLI issues. #2483 2024-01-03 16:09:42 +05:30
Akshay Joshi 740ce15bd7 Update copyright notices for 2024 2024-01-01 14:13:48 +05:30
Aditya Toshniwal e837de5e8f Fixed browser autocomplete related issues on pgAdmin authentication related pages. #7082 2023-12-28 16:29:15 +05:30
Khushboo Vashi 0d287df6dd
Administer pgAdmin Users and Preferences Using the Command Line Interface (CLI). #2483 2023-12-21 12:07:26 +05:30
Akshay Joshi 85255b65b1 1) Ensure that the Authentication Source in the drop-down of the UserManagement dialog aligns with the entries specified for AUTHENTICATION_SOURCES in the configuration file. #6950
2) Fixed an issue where the pgAdmin page went blank when clicking the delete button in the User Management dialog. #6989
2023-11-27 14:16:49 +05:30
Aditya Toshniwal c9db4a0d16 Add DROP SQL for foreign keys in SQL generated by ERD when using WITH DROP option. #5770 2023-11-16 16:55:26 +05:30
Aditya Toshniwal 862f101772
Significant changes to use ReactJS extensively.
1. Replace the current layout library wcDocker with ReactJS based rc-dock. #6479
2. Have close buttons on individual panel tabs instead of common. #2821
3. Changes in the context menu on panel tabs - Add close, close all and close others menu items. #5394
4. Allow closing all the tabs, including SQL and Properties. #4733
5. Changes in docking behaviour of different tabs based on user requests and remove lock layout menu.
6. Fix an issue where the scroll position of panels was not remembered on Firefox. #2986
7. Reset layout now will not require page refresh and is done spontaneously.
8. Use the zustand store for storing preferences instead of plain JS objects. This will help reflecting preferences immediately.
9. The above fix incorrect format (no indent) of SQL stored functions/procedures. #6720
10. New version check is moved to an async request now instead of app start to improve startup performance.
11. Remove jQuery and Bootstrap completely.
12. Replace jasmine and karma test runner with jest. Migrate all the JS test cases to jest. This will save time in writing and debugging JS tests.
13. Other important code improvements and cleanup.
2023-10-23 17:43:17 +05:30
Khushboo Vashi c07c153f15 Fix an issue where the browser window stuck on spinning with an Oauth user without email. #6874 2023-10-20 11:16:35 +05:30
Khushboo Vashi b4b2a4ff67 Fix an issue where user login is not working if username/email contains single quote in server mode. #6865 2023-10-17 13:49:18 +05:30
Aditya Toshniwal a1c7265c41
Fix PEP8 issues with latest pycodestyle (#6636) 2023-07-31 18:14:39 +05:30
Aditya Toshniwal d6cddd8c29
Remove Bootstrap and jQuery from authentication pages and rewrite them in ReactJS. #6295 2023-06-30 16:08:33 +05:30
Akshay Joshi 6949b41fb9 Ensure that a new row should be added on top in the User Management dialog. Fixes #5817 2023-05-18 13:26:47 +05:30
Aditya Toshniwal 9924fae378
Nomenclature changes:
1. Rename "Properties..." context menu option of object to "Edit Object...".
2. Rename "Browser" tree to "Object Explorer". #4734
2023-03-28 22:20:14 +05:30
Aditya Toshniwal 292d76b39e
Update SQLAlchemy, Flask, Flask-SQLAlchemy, and other packages to current versions. #5901
- Update Flask, Flask-SQLAlchemy, Flask-Babel, Flask-Security-Too, Flask-SocketIO, pytz, psutil, SQLAlchemy, bcrypt, cryptography, eventlet, Authlib, requests python packages
- Remove pinned dnspython, Werkzeug packages from requirements.txt
2023-03-15 11:57:16 +05:30
Akshay Joshi 0a543d0e95 Ensure that the user's storage directory is created when the users are created, as well as for those users who have not yet been created. #5824 2023-03-14 18:21:18 +05:30