2017-05-26 82 views
1

我有我在Django創建了兩個組。我創建了billing_users和billing_admins。我在ldap,internalBilling-admin和internalBilling-users中也有兩組用戶。你如何從Active Directory組的Django模型的Django python3-LDAP創建組和權限?

我現在有Django的python3-LDAP認證工作。但我必須登錄到Django和手動設置的用戶作爲is_staff和is_superuser允許用戶登錄到管理員默認的管理控制檯。另外,我必須將它們分配給它們所屬的組。

問題1: 有沒有我可以自動將基於他們屬於Django的組標誌的方法嗎?

問題2: 有沒有一種方法可以讓Active Directory用戶組設置Django組,使用django-python3-ldap將用戶設置在正確的Django組中?

作者聲明如下:

的LDAP_AUTH_CLEAN_USER_DATA和LDAP_AUTH_SYNC_USER_RELATIONS設置 是你的朋友在這裏。點擊這裏,查看文檔:

https://github.com/etianen/django-python3-ldap#available-settings

但我不明白LDAP_AUTH_CLEAN_USER_DATA和LDAP_AUTH_SYNC_USER_RELATIONS是如何工作的,因爲沒有正在實施這樣的例子。

+0

我發現[這個例子](https://github.com/etianen/django-python3-ldap/issues/74# issuecomment-304396431)在問題 – JimInCO

+0

是的,我寫了評論 – pitchblack408

回答

1

筆者確認這是正確的方式做到這一點https://github.com/etianen/django-python3-ldap/issues/74#issuecomment-304396431

def sync_all_user_group_relations(user, data): 

    ldap_groups = list(data.get('memberOf',())) 
    for group in ldap_groups: 
     if group == 'CN=InternalBilling-Users,OU=ABC-Users,OU=Groups,DC=abc,DC=abc,DC=com': 
      g = Group.objects.get(name='Billing clerks') 
      user.is_staff=True 
      user.save() 
      g.user_set.add(user) 
     elif group == 'CN=InternalBilling-Admin,OU=ABC-Users,OU=Groups,DC=abc,DC=abc,DC=com': 
      g = Group.objects.get(name='Billing admins') 
      user.is_staff=True 
      user.save() 
      g.user_set.add(user) 
相關問題