Example #1
0
    def test_auth_checker(self):
        import ptah

        principal = Principal('1', 'user', 'user')

        class Provider(object):
            def authenticate(self, creds):
                if creds['login'] == 'user':
                    return Principal('1', 'user', 'user')

        ptah.register_auth_provider('test-provider', Provider())

        @ptah.auth_checker
        def checker(info):
            info.message = 'Suspended'
            info.arguments['additional'] = 'test'
            return False

        self.init_ptah()

        info = ptah.auth_service.authenticate(
            {'login': '******', 'password': '******'})

        self.assertFalse(info.status)
        self.assertEqual(info.__uri__, '1')
        self.assertEqual(info.message, 'Suspended')
        self.assertEqual(info.arguments, {'additional': 'test'})

        principal = Principal('1', 'user', 'user')

        info = ptah.auth_service.authenticate_principal(principal)
        self.assertFalse(info.status)
        self.assertEqual(info.__uri__, '1')
        self.assertEqual(info.message, 'Suspended')
        self.assertEqual(info.arguments, {'additional': 'test'})
Example #2
0
    def test_auth_principal_login(self):
        import ptah

        principal = Principal("1", "user", "user")

        class Provider(object):
            def get_principal_bylogin(self, login):
                if login == "user":
                    return principal

        ptah.register_auth_provider("test-provider", Provider())

        self.assertEqual(ptah.authService.get_principal_bylogin("user2"), None)

        self.assertEqual(ptah.authService.get_principal_bylogin("user"), principal)
Example #3
0
    def test_auth_principal_login(self):
        import ptah

        principal = Principal('1', 'user', 'user')
        class Provider(object):
            def get_principal_bylogin(self, login):
                if login == 'user':
                    return principal

        ptah.register_auth_provider('test-provider', Provider())
        self.init_ptah()

        self.assertEqual(
            ptah.auth_service.get_principal_bylogin('user2'), None)

        self.assertEqual(
            ptah.auth_service.get_principal_bylogin('user'), principal)
Example #4
0
    def test_auth_simple(self):
        import ptah

        info = ptah.authService.authenticate({"login": "******", "password": "******"})

        self.assertFalse(info.status)

        class Provider(object):
            def authenticate(self, creds):
                if creds["login"] == "user":
                    return Principal("1", "user", "user")

        ptah.register_auth_provider("test-provider", Provider())

        info = ptah.authService.authenticate({"login": "******", "password": "******"})

        self.assertTrue(info.status)
        self.assertEqual(info.uri, "1")
Example #5
0
    def test_auth_checker(self):
        import ptah

        self._init_ptah()

        principal = Principal("1", "user", "user")

        info = ptah.authService.authenticate_principal(principal)
        self.assertTrue(info.status)
        self.assertEqual(info.uri, "1")
        self.assertEqual(info.message, "")
        self.assertEqual(info.arguments, {})

        class Provider(object):
            def authenticate(self, creds):
                if creds["login"] == "user":
                    return Principal("1", "user", "user")

        ptah.register_auth_provider("test-provider", Provider())

        def checker(info):
            info.message = "Suspended"
            info.arguments["additional"] = "test"
            return False

        ptah.register_auth_checker(checker)

        info = ptah.authService.authenticate({"login": "******", "password": "******"})

        self.assertFalse(info.status)
        self.assertEqual(info.uri, "1")
        self.assertEqual(info.message, "Suspended")
        self.assertEqual(info.arguments, {"additional": "test"})

        principal = Principal("1", "user", "user")

        info = ptah.authService.authenticate_principal(principal)
        self.assertFalse(info.status)
        self.assertEqual(info.uri, "1")
        self.assertEqual(info.message, "Suspended")
        self.assertEqual(info.arguments, {"additional": "test"})
Example #6
0
    def test_auth_simple(self):
        import ptah

        info = ptah.authService.authenticate(
            {'login': '******', 'password': '******'})

        self.assertFalse(info.status)

        class Provider(object):
            def authenticate(self, creds):
                if creds['login'] == 'user':
                    return Principal('1', 'user', 'user')

        ptah.register_auth_provider('test-provider', Provider())
        self._init_ptah()

        info = ptah.authService.authenticate(
            {'login': '******', 'password': '******'})

        self.assertTrue(info.status)
        self.assertEqual(info.uri, '1')
Example #7
0
    def test_auth_provider(self):
        import ptah

        info = ptah.auth_service.authenticate(
            {'login': '******', 'password': '******'})

        self.assertFalse(info.status)
        self.assertIsNone(info.principal)

        class Provider(object):
            def authenticate(self, creds):
                if creds['login'] == 'user':
                    return Principal('1', 'user', 'user')

        ptah.register_auth_provider('test-provider', Provider())
        self.init_ptah()

        info = ptah.auth_service.authenticate(
            {'login': '******', 'password': '******'})

        self.assertTrue(info.status)
        self.assertEqual(info.__uri__, '1')
Example #8
0
    def __repr__(self):
        return 'CrowdUser<%s:%s>'%(self.name, self.uri)


_sql_search = ptah.QueryFreezer(
    lambda: Session.query(CrowdUser) \
    .filter(
        sqla.sql.or_(CrowdUser.email.contains(sqla.sql.bindparam('term')),
                     CrowdUser.name.contains(sqla.sql.bindparam('term'))))\
    .order_by(sqla.sql.asc('name')))


@ptah.principal_searcher('user+crowd')
def search(term):
    for user in _sql_search.all(term = '%%%s%%'%term):
        yield user


@ptah.resolver('user+crowd')
def get_byuri(uri):
    """Crowd principal resolver"""
    return CrowdUser._sql_get_uri.first(uri=uri)


@ptah.password_changer('user+crowd')
def change_pwd(principal, password):
    principal.password = password


ptah.register_auth_provider('user+crowd', CrowdProvider())
Example #9
0
    def authenticate(self, creds):
        login, password = creds['login'], creds['password']

        user = User.get(login)

        if user is not None:
            if ptah.passwordTool.check(user.password,password):
                return user

    def get_principal(self, uri):
        return User.getByURI(uri)

    def get_principal_bylogin(self, login):
        return User.get(login)

    _sql_search = ptah.QueryFreezer(
        lambda: Session.query(User) \
        .filter(User.email.contains(sqla.sql.bindparam('term')))
        .order_by(sqla.sql.asc('email')))

    def search(self, term):
        for user in self._sql_search.all(term = '%%%s%%'%term):
            yield user


provider = PloudProvider()
ptah.register_uri_resolver('user-ploud', provider.get_principal)
ptah.register_auth_provider('ploud', provider)
ptah.register_principal_searcher('ploud', provider.search)
Example #10
0
    @classmethod
    def get_bylogin(cls, login):
        return Session.query(User).filter(User.login==login).first()


@ptah.principal_searcher('user-crowd')
def search(term):
    term = '%%%s%%'%term

    q = Session.query(User) \
        .filter(sqla.sql.or_(User.email.contains(term),
                             User.name.contains(term)))\
                             .order_by(sqla.sql.asc('name'))
    for user in q:
        yield user


@ptah.resolver('custom-user')
def get_byuri(uri):
    """User resolver"""
    return User.get_byuri(uri)


@ptah.password_changer('user-crowd')
def change_pwd(principal, password):
    principal.password = password


ptah.register_auth_provider('user-crowd', AuthProvider())
Example #11
0
    def authenticate(self, creds):
        login, password = creds['login'], creds['password']
        user = User.get(login)
        if user is not None:
            return user 

    def get_principal_bylogin(self, login):
        return User(login)


# registration
@ptah.resolver('user+example', 'An example principal resolver')
def getPrincipal(uri):
    return User.get(uri)

ptah.register_auth_provider('example', UserProvider())

 
if __name__ == '__main__':
    """ need to point to your settings.ini file in make_wsgi_app call.
        http://localhost:8080/show_models is url dispatch function.
        http://localhost:8080/list_children is traverser on context
        $resource_url/show_info on either folder or content.
    """
    from pyramid.config import Configurator

    config = Configurator(settings={'settings':r'./ptah.ini'})
    config.include('ptah')
    config.ptah_init()
    app = config.make_wsgi_app()
Example #12
0
        login, password = creds['login'], creds['password']
        user = User.get(login)
        if user is not None:
            return user

    def get_principal_bylogin(self, login):
        return User(login)


# registration
@ptah.resolver('user-example', 'An example principal resolver')
def getPrincipal(uri):
    return User.get(uri)


ptah.register_auth_provider('example', UserProvider())

if __name__ == '__main__':
    """ need to point to your settings.ini file in make_wsgi_app call.
        http://localhost:8080/show_models is url dispatch function.
        http://localhost:8080/list_children is traverser on context
        $resource_url/show_info on either folder or content.
    """
    from pyramid.config import Configurator

    config = Configurator(settings={'settings': r'./ptah.ini'})
    config.include('ptah')
    config.ptah_init()
    app = config.make_wsgi_app()

    serve(app, host='0.0.0.0')