def authenticate(username, password): """ Authenticate user. Args: username (str): Username to login password (str): Password Returns: user: authenticated user """ # find user by username users = list(User.list(None, return_objects=True).values()) username_table = {u.username: u for u in users} user = username_table.get(username) if user: given_password = password.encode('utf-8') # fallback to local auth, this options is default if nothing is specified if not user.auth: user.auth = "LocalAuth" logger.debug("User {} will be authenticated using {}".format( username, user.auth)) auth_instance = get_auth_instance(user.auth) try: verified_user, verification_error = auth_instance.verify( user, given_password) except Exception as e: logger.exception("Verification method {} failed".format(user.auth)) verified_user, verification_error = None, str(e) if isinstance(verified_user, User) and verified_user.active: return verified_user else: logger.info( "User {user} failed auth using {method} auth method with error {error}" .format( user=user, method=user.auth, error=verification_error, ))
def authenticate(username, password): """ Authenticate user. Args: username (str): Username to login password (str): Passwore Returns: user: authenticated user """ users = list(User.list(return_objects=True).values()) username_table = {u.username: u for u in users} user = username_table.get(username, None) if user and safe_str_cmp(user.password.encode('utf-8'), password.encode('utf-8')): return user
def authenticate(username, password): """ Authenticate user. Args: username (str): Username to login password (str): Password Returns: user: authenticated user """ users = list(User.list(None, return_objects=True).values()) username_table = {u.username: u for u in users} user = username_table.get(username) if user: user_password = user.password.encode('utf-8') given_password = password.encode('utf-8') if user.active and bcrypt.checkpw(given_password, user_password): return user