MCPcopy Create free account
hub / github.com/pgadmin-org/pgadmin4 / set_master_password

Function set_master_password

web/pgadmin/browser/__init__.py:680–884  ·  view source on GitHub ↗

Set the master password and store in the memory This password will be used to encrypt/decrypt saved server passwords

()

Source from the content-addressed store, hash-verified

678@blueprint.route("/master_password", endpoint="set_master_password",
679 methods=["POST"])
680def set_master_password():
681 """
682 Set the master password and store in the memory
683 This password will be used to encrypt/decrypt saved server passwords
684 """
685 data = None
686 if request.form:
687 data = request.form
688 elif request.data:
689 data = request.data
690 if hasattr(request.data, 'decode'):
691 data = request.data.decode('utf-8')
692
693 if data != '':
694 data = json.loads(data)
695
696 keyring_name = ''
697 errmsg = ''
698 master_password_hook = False
699 if not config.SERVER_MODE:
700 if config.USE_OS_SECRET_STORAGE:
701 try:
702 # Try to get master key is from local os storage
703 master_key = get_master_password_key_from_os_secret()
704 master_password = data.get('password', None)
705 keyring_name = config.KEYRING_NAME
706 if not master_key:
707 # Generate new one and migration required
708 master_key = secrets.token_urlsafe(12)
709 keyring.delete_password(KEY_RING_SERVICE_NAME,
710 'entry_to_check_keychain_access')
711 # migrate existing server passwords
712 from pgadmin.browser.server_groups.servers.utils \
713 import migrate_saved_passwords
714 migrated_save_passwords, error = migrate_saved_passwords(
715 master_key, master_password)
716
717 if migrated_save_passwords:
718 # Update keyring
719 keyring.set_password(KEY_RING_SERVICE_NAME,
720 KEY_RING_USER_NAME,
721 master_key)
722 # set crypt key
723 set_crypt_key(master_key)
724 return form_master_password_response(
725 existing=True,
726 present=True,
727 keyring_name=keyring_name)
728 else:
729 if not error:
730 # Update keyring
731 keyring.set_password(KEY_RING_SERVICE_NAME,
732 KEY_RING_USER_NAME,
733 master_key)
734 set_crypt_key(master_key)
735 return form_master_password_response(
736 present=True)
737 # Migration failed

Callers

nothing calls this directly

Calls 14

migrate_saved_passwordsFunction · 0.90
set_crypt_keyFunction · 0.90
validate_master_passwordFunction · 0.90
get_crypt_keyFunction · 0.90
gettextFunction · 0.85

Tested by

no test coverage detected