0007-backends-ldap-apply-force_bytes-inside-all-structure.patch
src/authentic2/backends/ldap_backend.py | ||
---|---|---|
58 | 58 |
break |
59 | 59 | |
60 | 60 | |
61 |
def map_bytes(d): |
|
62 |
if isinstance(d, six.string_types): |
|
63 |
return force_bytes(d) |
|
64 |
elif isinstance(d, (list, tuple)): |
|
65 |
return d.__class__(map_bytes(x) for x in d) |
|
66 |
elif isinstance(d, dict): |
|
67 |
return {map_bytes(k): map_bytes(v) for k, v in d.iteritems()} |
|
68 | ||
69 | ||
61 | 70 |
class LDAPUser(get_user_model()): |
62 | 71 |
SESSION_LDAP_DATA_KEY = 'ldap-data' |
63 | 72 |
_changed = False |
... | ... | |
1118 | 1127 |
if not isinstance(cls._DEFAULTS[d], bool) and d in cls._REQUIRED and not block[d]: |
1119 | 1128 |
raise ImproperlyConfigured( |
1120 | 1129 |
'LDAP_AUTH_SETTINGS: attribute %r is required but is empty') |
1130 |
# force_bytes all strings in iterable or dict |
|
1131 |
if isinstance(block[d], (list, tuple, dict)): |
|
1132 |
block[d] = map_bytes(block[d]) |
|
1121 | 1133 |
for i in cls._TO_ITERABLE: |
1122 | 1134 |
if isinstance(block[i], six.string_types): |
1123 | 1135 |
block[i] = (block[i],) |
1124 |
- |