Это мой первый вопрос здесь, на SO.Я использую django_ldap_auth 1.7 с django версии 2.2.Согласно их документации, можно заполнить модель UserProfile также вместе с моделью User.Я прочитал документацию, расположил мои settings.py и models.py таким образом.Но безуспешно, я могу заполнить только модель User, но модель профиля.
account / models.py
`class UserProfile(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
user_id = models.CharField(max_length=16, null=True, blank=True)
firstname = models.TextField(null=True, blank=True)
lastname = models.CharField(max_length=16, null=True, blank=True)
role = models.CharField(max_length=16, null=True, blank=True)
class Meta:
app_label = 'account'
def __str__(self):
return self.user.username
def __init__():
print("Initiated User Profile")`
settings.py
import os
import ldap
from django_auth_ldap.config import LDAPSearch, GroupOfNamesType, GroupOfUniqueNamesType
import logging
AUTH_PROFILE_MODULE = 'account.UserProfile'
AUTH_LDAP_SERVER_URI = 'myURl'
AUTH_LDAP_BIND_DN = ''
AUTH_LDAP_BIND_PASSWORD = ''
AUTH_LDAP_USER_SEARCH = LDAPSearch('ou=People,dc=cse,dc=iitb,dc=ac,dc=in',
ldap.SCOPE_SUBTREE,
'(uid=%(user)s)')
AUTH_LDAP_USER_ATTR_MAP = {
'first_name': 'givenName',
'last_name': 'sn',
'email': 'mail',
}
AUTH_LDAP_PROFILE_ATTR_MAP = {
'userid': 'uid',
'firstname': 'givenName',
'lastname': 'sn',
'role' : 'employeeNumber',
}
AUTH_LDAP_ALWAYS_UPDATE_USER = True
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("ou=People,dc=cse,dc=iitb,dc=ac,dc=in",ldap.SCOPE_SUBTREE,"(objectClass=groupOfNames)")
AUTH_LDAP_GROUP_TYPE = GroupOfNamesType()
AUTH_LDAP_MIRROR_GROUPS = True
....
logger = logging.getLogger('django_auth_ldap')
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.DEBUG)
консольный вывод логгера
search_s('ou=People,dc=cse,dc=iitb,dc=ac,dc=in', 2, '(uid=%(user)s)') returned 1 objects: uid=csehem,ou=pg17,ou=pg,ou=students,ou=people,dc=cse,dc=iitb,dc=ac,dc=in
Creating Django user csehem
Populating Django user csehem
search_s('ou=People,dc=cse,dc=iitb,dc=ac,dc=in', 2, '(&(objectClass=groupOfNames)(member=uid=csehem,ou=pg17,ou=pg,ou=students,ou=people,dc=cse,dc=iitb,dc=ac,dc=in))') returned 0 objects:
Что не так?
Может кто-нибудь сказать, почему я не могу заполнить модель профиля и как это сделать?Спасибо. Кроме того, группы не являются зеркалами, я хочу, чтобы все группы были синхронизированы с django.Какой способ сделать это?