codekingpro/portable-devtools
114k
1##########################################################################2#3# pgAdmin 4 - PostgreSQL Tools4#5# Copyright (C) 2013 - 2024, The pgAdmin Development Team6# This software is released under the PostgreSQL Licence7#8##########################################################################9 10import config11import string12import secrets13import os14import getpass15from pgadmin.utils.constants import ENTER_EMAIL_ADDRESS16 17from pgadmin.utils.validation_utils import validate_email18 19 20def user_info_desktop():21 print("NOTE: Configuring authentication for DESKTOP mode.")22 email = config.DESKTOP_USER23 p1 = ''.join([24 secrets.choice(string.ascii_letters + string.digits)25 for _ in range(32)26 ])27 return email, p128 29 30def pprompt():31 return getpass.getpass(), getpass.getpass('Retype password:')32 33 34def user_info_server():35 print("NOTE: Configuring authentication for SERVER mode.\n")36 37 if all(value in os.environ for value in38 ['PGADMIN_SETUP_EMAIL', 'PGADMIN_SETUP_PASSWORD']):39 email = ''40 p1 = ''41 if os.environ['PGADMIN_SETUP_EMAIL'] \42 and os.environ['PGADMIN_SETUP_PASSWORD']:43 email = os.environ['PGADMIN_SETUP_EMAIL']44 p1 = os.environ['PGADMIN_SETUP_PASSWORD']45 else:46 # Prompt the user for their default username and password.47 print(48 "Enter the email address and password to use for the initial "49 "pgAdmin user account:\n"50 )51 52 email = input(ENTER_EMAIL_ADDRESS)53 while not validate_email(email):54 print('Invalid email address. Please try again.')55 email = input(ENTER_EMAIL_ADDRESS)56 57 p1, p2 = pprompt()58 while p1 != p2 or len(p1) < config.PASSWORD_LENGTH_MIN:59 if p1 != p2:60 print('Passwords do not match. Please try again.')61 else:62 print(63 'Password must be at least {} characters. '64 'Please try again.'.format(config.PASSWORD_LENGTH_MIN)65 )66 p1, p2 = pprompt()67 68 return email, p169 70 71def user_info():72 if config.SERVER_MODE is False:73 email, p1 = user_info_desktop()74 else:75 email, p1 = user_info_server()76 77 return email, p178 