2017-05-15 10 views
0

Ich habe eine Django-App, die zwei Authentifizierungs-Backends hat, ein LDAP-Backend mit allen 'internen' Benutzern und ein benutzerdefiniertes Backend mit 'externen' Benutzern. Alle internen Benutzer, die dem LDAP-Gruppensuchfilter entsprechen, sollten mit is_staff: True erstellt werden.django-auth-ldap Standardwerte für neu erstellten Benutzer

Früher haben wir

AUTH_LDAP_USER_ATTR_MAP = { 
    "name": "cn", 
    "email": "mail", 
    "is_staff": "mail", 
} 

und dies schien ganz gut zu funktionieren, aber unter Verwendung von Django 1.10 erhalten wir jetzt:

django.core.exceptions.ValidationError: ["'[email protected]' value must be either True or False."] 

Ich weiß, dass ich für die Gruppenmitgliedschaft suchen und anzeigen lassen, dass zu is_staff aber grundsätzlich möchte ich alle Konten für Benutzer, die Authentifizierung gegen LDAP automatisch auf is_staff: True.

Gibt es einen geeigneten Weg, dies zu tun? Ich weiß, dass ich es nachträglich beheben kann, indem ich mich in das Signal django_auth_ldap.backend.populate_user einklinke, aber dann ist der Benutzer bereits erstellt, vorzugsweise möchte ich den Benutzer ändern, bevor sie erstellt werden.

Antwort

0

Die ordnungsgemäße Umsetzung würde mit der AUTH_LDAP_USER_FLAGS_BY_GROUP Einstellung wahrscheinlich sein, wie hier dokumentiert: http://pythonhosted.org/django-auth-ldap/users.html#easy-attributes

Insbesondere dann, wenn Sie eine Gruppe identifizieren, auf die alle Benutzer gehören, können Sie so etwas wie:

AUTH_LDAP_USER_FLAGS_BY_GROUP = { 
    "is_staff": "cn=users,ou=groups,dc=example,dc=com" 
} 
Verwandte Themen