Advertisement
philip_ritchey

TAMU ENGR 102 add_user.py

Nov 6th, 2018
396
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.97 KB | None | 0 0
  1. import sys
  2. import getpass
  3. from login import get_password
  4.  
  5.  
  6. def add_user(username: str = None, password: str = None) -> None:
  7.     """
  8.    Add a user to the password file.
  9.    
  10.    username -- the username (default None, will prompt user)
  11.    password -- the password (default None, will prompt user)
  12.    """
  13.    
  14.     if not username:
  15.         username = input('username: ')
  16.     if len(username) == 0:
  17.             print('[FATAL] username cannot be empty. exiting...')
  18.             return
  19.  
  20.     # enforce case insensitivity for username
  21.     username = username.lower()
  22.    
  23.     if not validate_username(username):
  24.         print('[FATAL] username contains illegal characters.  exiting...')
  25.         return        
  26.    
  27.     try:
  28.         _passwd = get_password(username)
  29.         print('[FATAL] user "{username:s}" already exists. exiting...'.format(username=username))
  30.         return
  31.     except (FileNotFoundError, LookupError):
  32.         # FileNotFoundError: password file doesn't exist, will be created
  33.         # LookupError: username does not exist, will be created
  34.         pass
  35.  
  36.     if not password:
  37.         password1 = getpass.getpass('password: ')
  38.         password2 = getpass.getpass('confirm password: ')
  39.         if not password1 == password2:
  40.             print('[FATAL] passwords do not match. exiting...')
  41.             return
  42.         password = password1
  43.     if len(password) == 0:
  44.             print('[FATAL] password cannot be empty. exiting...')
  45.             return
  46.  
  47.     with open('passwd', 'at') as passwd:
  48.         passwd.write('{username:s}:{password:s}\n'.format(\
  49.         username=username, password=password))
  50.  
  51.  
  52. def validate_username(username: str) -> bool:
  53.     for c in username:
  54.         if c not in '_abcdefghijklmnopqrstuvwxyz0123456789':
  55.             return False
  56.     return True
  57.  
  58.  
  59. if __name__ == '__main__':
  60.     argc = len (sys.argv)
  61.     uname = sys.argv[1] if argc > 1 else None
  62.     pword = sys.argv[2] if argc > 2 else None
  63.     add_user(uname, pword)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement