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'})
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)
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)
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")
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"})
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')
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')
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())
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)
@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())
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()
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')