Модуль профиля не синхронизируется, ни группы (django_auth_ldap) - PullRequest
0 голосов
/ 16 апреля 2019

Это мой первый вопрос здесь, на 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.Какой способ сделать это?

...