def authenticate(self, environ, identity):
        """
        Check the given auth details and if its ok return the
        userid for the given details.

        See: (IAuthenticatorPlugin)
            http://docs.repoze.org/who/narr.html\
                #writing-an-authenticator-plugin

        :returns: None indicated auth failure.

        """
        from pp.user.model import user

        login = identity['login']
        if not login:
            get_log().info(
                "authenticate: No login name given <{!r}>".format(login)
            )
            return

        #get_log().info("authenticate: %r" % login)
        password = identity['password']
        try:
            # get_log().info(
            #     "authenticate:  attempting to authenticate <{!r}>".format(
            #         login
            #     )
            # )
            user.validate_password(login, password)

        except:
            get_log().exception(
                "Authenticate comms error for <{!r}>: ".format(login)
            )

        else:
            get_log().info(
                "authenticate: <{!r}> authenticated OK.".format(login)
            )
            return login
Beispiel #2
0
def test_validate_password(logger, mongodb):

    assert user.count() == 0
    assert user.dump() == []

    username = u'andrés.bolívar'
    display_name = u'Andrés Plácido Bolívar'
    email = u'andrés.bolí[email protected]'

    data = [
        {
            "username": "******",
            "oauth_tokens": {
                "googleauth": {
                    "request_token": "1234567890"
                }
            },
            "display_name": "Bobby",
            "phone": "12121212",
            "cats": "big",
            "teatime": 1,
            "_id": "user-2719963b00964c01b42b5d81c998fd05",
            "email": "*****@*****.**",
            "password_hash": pwtools.hash_password('11amcoke')
        },
        {
            "username": username.encode('utf-8'),
            "display_name": display_name.encode('utf-8'),
            "phone": "",
            "_id": "user-38ed1d2903344702b30bb951916aaf1c",
            "email": email.encode('utf-8'),
            "password_hash": pwtools.hash_password('$admintime$')
        }
    ]
    user.load(data)

    assert user.validate_password('bob.sprocket', '11amcoke') is True
    assert user.validate_password('bob.sprocket', 'incorrect') is False
    assert user.validate_password(username, '11amcoke') is False
    assert user.validate_password(username, '$admintime$') is True