You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

60 lines
1.6 KiB

from . import Password, PasswordManager
from typing import Tuple, List, Optional
class PlainTextPasswordManager( PasswordManager ):
"""
Passwords provided as plain-text (bad idea, but always useful)
"""
@classmethod
def name( cls ):
return "plaintext"
@classmethod
def verify( cls, config: dict, path: str ) -> Tuple[bool, List[str]]:
"""
Verifies that the configuration is correct
Args:
config: dict with password manager configuration
path: path to the "config" dict in the main configuration file
Returns:
bool: true if the config is correct
List[str]: list of errors if the config is not correct
"""
ok = True
errors = []
if "passwords" not in config:
ok = False
errors.append(f'Missing section "{path}.passwords"')
elif type(config["passwords"]) is not dict:
ok = False
errors.append(f'"{path}.passwords" is not dict')
return (ok, errors)
def __init__( self, config: dict ):
self.passwords = config["passwords"]
def get( self, identifier: str ) -> Password:
"""
Gets a password from the manager.
This function is overriden by the concrete PasswordManager instances.
Args:
identifier: which password to get
Returns:
None if the password is not found,
the password otherwise
"""
if identifier not in self.passwords:
return Password( None )
return Password( self.passwords[identifier] )