diff --git a/gluon/contrib/login_methods/ldap_auth.py b/gluon/contrib/login_methods/ldap_auth.py index aa0690f8..4f64cedb 100644 --- a/gluon/contrib/login_methods/ldap_auth.py +++ b/gluon/contrib/login_methods/ldap_auth.py @@ -521,17 +521,19 @@ def ldap_auth(server='ldap', port=None, logging.error( 'There is no username or email for %s!' % username) raise - if not db.can_join(): - # no joins on NoSQL databases, perform two queries - db_group_search = db(db.auth_membership.user_id == db_user_id) - group_ids = [x.group_id for x in db_group_search.select( - db.auth_membership.group_id, distinct=True)] - db_group_search = db(db.auth_group.id == group_ids) - else: + # if old pydal version, assume this is a relational database which can do joins + db_can_join = db.can_join() if hasattr(db, 'can_join') else True + if db_can_join: db_group_search = db( (db.auth_membership.user_id == db_user_id) & (db.auth_user.id == db.auth_membership.user_id) & (db.auth_group.id == db.auth_membership.group_id)) + else: + # no joins on NoSQL databases, perform two queries + db_group_search = db(db.auth_membership.user_id == db_user_id) + group_ids = [x.group_id for x in db_group_search.select( + db.auth_membership.group_id, distinct=True)] + db_group_search = db(db.auth_group.id.belongs(group_ids)) db_groups_of_the_user = list() db_group_id = dict() diff --git a/gluon/packages/dal b/gluon/packages/dal index 62eb7767..6c86a5c8 160000 --- a/gluon/packages/dal +++ b/gluon/packages/dal @@ -1 +1 @@ -Subproject commit 62eb7767db6ba88399034a785c7d35bf1f546437 +Subproject commit 6c86a5c83bc814be65fc0d6d3947951b6220aa17