def test_bind_search(self): """ This test will fail with out the pull request https://github.com/ContinuumIO/flask-ldap-login/pull/6 """ LDAP = dict(BIND_DN='x=user1', BIND_AUTH='pass1', USER_SEARCH=[{ 'base': 'base', 'filter': 'uid=%(username)s' }]) self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.bind_search('user1', 'pass2') self.assertIsNone(result) result = loginmanager.bind_search('user1', 'pass1') self.assertIsNotNone(result) self.assertEqual(result, { 'dn': 'x=user1', 'key': 'value1', 'uid': 'user1' })
def create_app(self): app = flask.Flask(__name__) LDAP = dict(BIND_DN='x=%(username)s') app.config.update(LDAP=LDAP) app.config['SECRET_KEY'] = 'abc123' mgr = LDAPLoginManager(app) mgr.save_user(self.save_user) return app
def create_app(self): app = flask.Flask(__name__) app.config['DEBUG'] = True app.config['TESTING'] = True app.config['WTF_CSRF_ENABLED'] = False ldap_dict = dict(BIND_DN='x=%(username)s') app.config.update(LDAP=ldap_dict) app.config['SECRET_KEY'] = 'abc123' mgr = LDAPLoginManager(app) mgr.save_user(self.save_user) return app
def test_direct_bind_keymap(self): LDAP = dict(BIND_DN='x=%(username)s', KEY_MAP={'transformed_key': 'key'}) self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.direct_bind('user1', 'pass1') self.assertIsNotNone(result) self.assertEqual(result, {'transformed_key': 'value1'})
def test_direct_bind(self): LDAP = dict(BIND_DN='x=%(username)s') self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.direct_bind('username', 'password') self.assertIsNone(result) result = loginmanager.direct_bind('user1', 'pass1') self.assertIsNotNone(result) self.assertEqual(result, {'key': 'value1', 'uid': 'user1'})
def test_bind_search_keymap(self): LDAP = dict(BIND_DN='x=user1', BIND_AUTH='pass1', USER_SEARCH=[{ 'base': 'base', 'filter': 'uid=%(username)s' }], KEY_MAP={'transformed_key': 'key'}) self.app.config.update(LDAP=LDAP) loginmanager = LDAPLoginManager(self.app) loginmanager.connect() result = loginmanager.bind_search('user1', 'pass1') self.assertIsNotNone(result) self.assertEqual(result, {'transformed_key': 'value1'})
# Map ldap keys into application specific keys 'KEY_MAP': { 'name': 'cn', 'company': 'o', 'location': 'l', 'email': 'mail', }, } #=============================================================================== # Import existing application #=============================================================================== from examples.base_app import app, User app.config.update(LDAP=LDAP) ldap_mgr = LDAPLoginManager(app) # Store users in memory users = {} @ldap_mgr.save_user def save_user(username, userdata): users[username] = User(username, userdata) return users[username] @app.route('/ldap/login', methods=['GET', 'POST']) def ldap_login(): form = LDAPLoginForm(request.form)