2016-10-23 12 views
0

私のプロジェクトにdjango-ldap-authを実装しようとしていますが、すべてうまくいくようです。問題は、1.7より新しいDjangoバージョンのuser profileフィールド集団をサポートしていないことです。ドキュメントからdjango-ldap-auth djangoのユーザープロフィール> 1.7

注ジャンゴ1.7以降、直接ユーザープロファイルをサポートしていません。これらのバージョンでは、LDAPBackendはプロファイル関連の設定を無視します。

私はsettings.pyにこれを追加しましたが、(期待通りに)何も起こりません:
AUTH_LDAP_PROFILE_ATTR_MAP = {"description": "description"}

私の質問は:私は、新しいDjangoのバージョンでAUTH_LDAP_PROFILE_ATTR_MAPを有効にするにはどうすればよいですか?

EDIT:私は、カスタム・ユーザー・モデルを使用してと思っていますが、私はそれがここに最善の方法だかはわからない。..

答えて

0

私はdjango-ldap-authから放出されたone-to-oneUser profile modelpopulate_user信号を使用して、これを解決しました。

コード

from __future__ import unicode_literals 
import django_auth_ldap.backend 
from fences.models import Profile 
from django.db import models 

def populate_user_profile(sender, user=None, ldap_user=None, **kwargs): 
    temp_profile = None 
    bucket = {} 

    try: 
     temp_profile = user.profile 
    except: 
     temp_profile = Profile.objects.create(user=user) 

    bucket['street_address'] = ldap_user.attrs.get('streetAddress') 
    bucket['telephone_number'] = ldap_user.attrs.get('telephoneNumber') 
    bucket['title'] = ldap_user.attrs.get('title') 

    for key, value in d.iteritems(): 
     if value: 
      setattr(user.profile, key, value[0].encode('utf-8')) 
    user.profile.save() 

django_auth_ldap.backend.populate_user.connect(populate_user_profile) 
関連する問題