Example #1
0
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,
                ))
Example #2
0
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
Example #3
0
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