From 36f69440393f28ac387dde0a58d39e5267da32e9 Mon Sep 17 00:00:00 2001
From: Nickolay Ponomarev <Nickolay.Ponomarev@glowbyteconsulting.com>
Date: Sat, 5 Oct 2019 05:22:30 +0300
Subject: [PATCH] Make groups-related functions work with str instead of bytes

(get_user_groups/get_group_members/group_required)

This was undone accidentally when removing support for Python2 in
https://github.com/admiralobvious/flask-simpleldap/commit/b2c0d10332d27db8b349753f89dceb7db520b7f2#diff-df961969fdc0fcec2f458e0fbb16eef9L238

Closes #63, #64.
---
 flask_simpleldap/__init__.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/flask_simpleldap/__init__.py b/flask_simpleldap/__init__.py
index d8093d0..12f28b9 100644
--- a/flask_simpleldap/__init__.py
+++ b/flask_simpleldap/__init__.py
@@ -232,8 +232,8 @@ class LDAP(object):
                 if current_app.config['LDAP_OPENLDAP']:
                     group_member_filter = \
                         current_app.config['LDAP_GROUP_MEMBER_FILTER_FIELD']
-                    groups = [record[1][group_member_filter][0] for
-                              record in records]
+                    groups = [record[1][group_member_filter][0].decode(
+                        'utf-8') for record in records]
                     return groups
                 else:
                     if current_app.config['LDAP_USER_GROUPS_FIELD'] in \
@@ -242,6 +242,7 @@ class LDAP(object):
                             current_app.config['LDAP_USER_GROUPS_FIELD']]
                         result = [re.findall(b'(?:cn=|CN=)(.*?),', group)[0]
                                   for group in groups]
+                        result = [r.decode('utf-8') for r in result]
                         return result
         except ldap.LDAPError as e:
             raise LDAPException(self.error(e.args))
@@ -266,6 +267,7 @@ class LDAP(object):
                         records[0][1]:
                     members = records[0][1][
                         current_app.config['LDAP_GROUP_MEMBERS_FIELD']]
+                    members = [m.decode('utf-8') for m in members]
                     return members
         except ldap.LDAPError as e:
             raise LDAPException(self.error(e.args))
-- 
GitLab