mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2026-10-25 06:07:39 -05:00
Text improvement for the OS secret store feature. #5123
This commit is contained in:
1 parent
3e031ad334
commit
fec63c6cf3
10 files changed
+56
-18
No files matched your search
@@ -746,12 +746,12 @@ def get_nodes():
|
||||
|
||||
|
||||
def form_master_password_response(existing=True, present=False, errmsg=None,
|
||||
is_keyring=False):
|
||||
keyring_name=''):
|
||||
return make_json_response(data={
|
||||
'present': present,
|
||||
'reset': existing,
|
||||
'errmsg': errmsg,
|
||||
'is_keyring': is_keyring,
|
||||
'keyring_name': keyring_name,
|
||||
'is_error': True if errmsg else False
|
||||
})
|
||||
|
||||
@@ -821,7 +821,7 @@ def set_master_password():
|
||||
not validate_master_password(data.get('password')):
|
||||
return form_master_password_response(
|
||||
present=False,
|
||||
is_keyring=True,
|
||||
keyring_name=config.KEYRING_NAME,
|
||||
errmsg=gettext("Incorrect master password")
|
||||
)
|
||||
from pgadmin.model import Server
|
||||
@@ -835,6 +835,7 @@ def set_master_password():
|
||||
KEY_RING_SERVICE_NAME, KEY_RING_DESKTOP_USER.format(
|
||||
desktop_user.username)) or data['password']:
|
||||
all_server = Server.query.all()
|
||||
is_migrated = False
|
||||
for server in all_server:
|
||||
if server.password and data['password'] \
|
||||
and server.save_password:
|
||||
@@ -845,6 +846,7 @@ def set_master_password():
|
||||
# Store the password using OS password manager
|
||||
keyring.set_password(KEY_RING_SERVICE_NAME, name,
|
||||
password)
|
||||
is_migrated = True
|
||||
setattr(server, 'password', None)
|
||||
|
||||
db.session.commit()
|
||||
@@ -856,12 +858,12 @@ def set_master_password():
|
||||
return form_master_password_response(
|
||||
existing=True,
|
||||
present=True,
|
||||
is_keyring=True
|
||||
keyring_name=config.KEYRING_NAME if is_migrated else ''
|
||||
)
|
||||
else:
|
||||
return form_master_password_response(
|
||||
present=False,
|
||||
is_keyring=True
|
||||
keyring_name=config.KEYRING_NAME
|
||||
)
|
||||
except Exception as e:
|
||||
current_app.logger.warning(
|
||||
|
||||
@@ -802,6 +802,10 @@ class ServerNode(PGChildNodeView):
|
||||
data = request.form if request.form else json.loads(
|
||||
request.data
|
||||
)
|
||||
|
||||
old_server_name = ''
|
||||
if 'name' in data:
|
||||
old_server_name = server.name
|
||||
if 'db_res' in data:
|
||||
data['db_res'] = ','.join(data['db_res'])
|
||||
|
||||
@@ -834,6 +838,25 @@ class ServerNode(PGChildNodeView):
|
||||
)
|
||||
|
||||
try:
|
||||
if len(old_server_name) and old_server_name != server.name and \
|
||||
not config.DISABLED_LOCAL_PASSWORD_STORAGE:
|
||||
# If server name is changed then update keyring with
|
||||
# new server name
|
||||
password = keyring.get_password(
|
||||
KEY_RING_SERVICE_NAME,
|
||||
KEY_RING_USERNAME_FORMAT.format(old_server_name,
|
||||
server.id))
|
||||
|
||||
keyring.set_password(
|
||||
KEY_RING_SERVICE_NAME,
|
||||
KEY_RING_USERNAME_FORMAT.format(server.name, server.id),
|
||||
password)
|
||||
|
||||
server_name = KEY_RING_USERNAME_FORMAT.format(
|
||||
old_server_name, server.id)
|
||||
# Delete saved password from OS password manager
|
||||
keyring.delete_password(KEY_RING_SERVICE_NAME,
|
||||
server_name)
|
||||
db.session.commit()
|
||||
except Exception as e:
|
||||
current_app.logger.exception(e)
|
||||
|
||||
Reference in new issue
Block a user