Skip to content

Commit 202d2bb

Browse files
Ensure saved shared server passwords are re-encrypted om password change.#9258
1 parent 4443494 commit 202d2bb

File tree

1 file changed

+26
-1
lines changed
  • web/pgadmin/browser/server_groups/servers

1 file changed

+26
-1
lines changed

web/pgadmin/browser/server_groups/servers/utils.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
KEY_RING_DESKTOP_USER, SSL_MODES, RESTRICTION_TYPE_DATABASES,
2020
RESTRICTION_TYPE_SQL)
2121
from pgadmin.utils.crypto import encrypt, decrypt
22-
from pgadmin.model import db, Server
22+
from pgadmin.model import db, Server, SharedServer
2323
from flask import current_app
2424
from pgadmin.utils.master_password import set_masterpass_check_text
2525
from pgadmin.utils.driver import get_driver
@@ -472,6 +472,31 @@ def reencrpyt_server_passwords(user_id, old_key, new_key):
472472
db.session.commit()
473473
manager.update_session()
474474

475+
# Ensure saved shared server passwords are re-encrypted.
476+
for server in SharedServer.query.filter_by(user_id=user_id).all():
477+
manager = driver.connection_manager(server.id)
478+
_password_check(server, manager, old_key, new_key)
479+
480+
if server.tunnel_password is not None:
481+
tunnel_password = decrypt(server.tunnel_password, old_key)
482+
if isinstance(tunnel_password, bytes):
483+
tunnel_password = tunnel_password.decode()
484+
485+
tunnel_password = encrypt(tunnel_password, new_key)
486+
setattr(server, 'tunnel_password', tunnel_password)
487+
manager.tunnel_password = tunnel_password
488+
elif manager.tunnel_password is not None:
489+
tunnel_password = decrypt(manager.tunnel_password, old_key)
490+
491+
if isinstance(tunnel_password, bytes):
492+
tunnel_password = tunnel_password.decode()
493+
494+
tunnel_password = encrypt(tunnel_password, new_key)
495+
manager.tunnel_password = tunnel_password
496+
497+
db.session.commit()
498+
manager.update_session()
499+
475500

476501
def remove_saved_passwords(user_id):
477502
"""

0 commit comments

Comments
 (0)