mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-25 18:55:31 -06:00
Fixed an issue where pgAdmin failed to connect when the Postgres password included special characters. #5847
This commit is contained in:
parent
026334a71a
commit
0fd1e0963e
@ -21,6 +21,7 @@ New features
|
|||||||
************
|
************
|
||||||
|
|
||||||
| `Issue #5832 <https://github.com/pgadmin-org/pgadmin4/issues/5832>`_ - Allow changing cardinality notation in ERD to use Chen notation.
|
| `Issue #5832 <https://github.com/pgadmin-org/pgadmin4/issues/5832>`_ - Allow changing cardinality notation in ERD to use Chen notation.
|
||||||
|
| `Issue #5842 <https://github.com/pgadmin-org/pgadmin4/issues/5842>`_ - Add additional logging for successful logins and user creation.
|
||||||
|
|
||||||
Housekeeping
|
Housekeeping
|
||||||
************
|
************
|
||||||
@ -32,3 +33,5 @@ Bug fixes
|
|||||||
|
|
||||||
| `Issue #5685 <https://github.com/pgadmin-org/pgadmin4/issues/5685>`_ - Ensure that Grant column permission to a view is visible in the SQL tab.
|
| `Issue #5685 <https://github.com/pgadmin-org/pgadmin4/issues/5685>`_ - Ensure that Grant column permission to a view is visible in the SQL tab.
|
||||||
| `Issue #5758 <https://github.com/pgadmin-org/pgadmin4/issues/5758>`_ - Fixed an issue where lock layout menu was not in sync with preferences.
|
| `Issue #5758 <https://github.com/pgadmin-org/pgadmin4/issues/5758>`_ - Fixed an issue where lock layout menu was not in sync with preferences.
|
||||||
|
| `Issue #5764 <https://github.com/pgadmin-org/pgadmin4/issues/5764>`_ - Fix an issue where the maintenance dialog for Materialized View gives an error.
|
||||||
|
| `Issue #5847 <https://github.com/pgadmin-org/pgadmin4/issues/5847>`_ - Fixed an issue where pgAdmin failed to connect when the Postgres password included special characters.
|
||||||
|
@ -99,7 +99,7 @@ export function showServerPassword() {
|
|||||||
})
|
})
|
||||||
.catch((err)=>{
|
.catch((err)=>{
|
||||||
return onFailure(
|
return onFailure(
|
||||||
err, nodeObj, nodeData, treeNodeInfo, itemNodeData, status
|
err, null, nodeObj, nodeData, treeNodeInfo, itemNodeData, status
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
|
@ -29,6 +29,7 @@ from pgadmin.utils.exception import ConnectionLost, SSHTunnelConnectionLost,\
|
|||||||
from pgadmin.utils.master_password import get_crypt_key
|
from pgadmin.utils.master_password import get_crypt_key
|
||||||
from pgadmin.utils.exception import ObjectGone
|
from pgadmin.utils.exception import ObjectGone
|
||||||
from pgadmin.utils.passexec import PasswordExec
|
from pgadmin.utils.passexec import PasswordExec
|
||||||
|
from psycopg2.extensions import make_dsn
|
||||||
|
|
||||||
if config.SUPPORT_SSH_TUNNEL:
|
if config.SUPPORT_SSH_TUNNEL:
|
||||||
from sshtunnel import SSHTunnelForwarder, BaseSSHTunnelForwarderError
|
from sshtunnel import SSHTunnelForwarder, BaseSSHTunnelForwarderError
|
||||||
@ -633,22 +634,21 @@ WHERE db.oid = {0}""".format(did))
|
|||||||
This function is used to create connection string based on the
|
This function is used to create connection string based on the
|
||||||
parameters.
|
parameters.
|
||||||
"""
|
"""
|
||||||
full_connection_string = \
|
dsn_args = dict()
|
||||||
'host=\'{0}\' port=\'{1}\' dbname=\'{2}\' user=\'{3}\''.format(
|
dsn_args['host'] = \
|
||||||
self.local_bind_host if self.use_ssh_tunnel else self.host,
|
self.local_bind_host if self.use_ssh_tunnel else self.host
|
||||||
self.local_bind_port if self.use_ssh_tunnel else self.port,
|
dsn_args['port'] = \
|
||||||
database, user)
|
self.local_bind_port if self.use_ssh_tunnel else self.port
|
||||||
|
dsn_args['dbname'] = database
|
||||||
self.display_connection_string = full_connection_string
|
dsn_args['user'] = user
|
||||||
|
|
||||||
|
# Make a copy to display the connection string on GUI.
|
||||||
|
display_dsn_args = dsn_args.copy()
|
||||||
# Password should not be visible into the connection string, so
|
# Password should not be visible into the connection string, so
|
||||||
# setting the value with password to 'xxxxxxx'.
|
# setting the value with password to 'xxxxxxx'.
|
||||||
if password:
|
if password:
|
||||||
self.display_connection_string = "{0} password='xxxxxxx'".format(
|
display_dsn_args['password'] = 'xxxxxxx'
|
||||||
self.display_connection_string)
|
dsn_args['password'] = password
|
||||||
|
|
||||||
full_connection_string = "{0} password='{1}'".format(
|
|
||||||
full_connection_string, password)
|
|
||||||
|
|
||||||
# Loop through all the connection parameters set in the server dialog.
|
# Loop through all the connection parameters set in the server dialog.
|
||||||
if self.connection_params and isinstance(self.connection_params, dict):
|
if self.connection_params and isinstance(self.connection_params, dict):
|
||||||
@ -666,11 +666,10 @@ WHERE db.oid = {0}""".format(did))
|
|||||||
value = self.local_bind_host if self.use_ssh_tunnel else \
|
value = self.local_bind_host if self.use_ssh_tunnel else \
|
||||||
value
|
value
|
||||||
|
|
||||||
self.display_connection_string = "{0} {1}='{2}'".format(
|
dsn_args[key] = value
|
||||||
self.display_connection_string, key,
|
display_dsn_args[key] = orig_value if with_complete_path else \
|
||||||
orig_value if with_complete_path else value)
|
value
|
||||||
|
|
||||||
full_connection_string = \
|
self.display_connection_string = make_dsn(**display_dsn_args)
|
||||||
"{0} {1}='{2}'".format(full_connection_string, key, value)
|
|
||||||
|
|
||||||
return full_connection_string
|
return make_dsn(**dsn_args)
|
||||||
|
Loading…
Reference in New Issue
Block a user