get ldap admins directly from ldap

This commit is contained in:
cmile 2022-09-27 20:51:40 +02:00
parent 4bd1b62e64
commit 3589cd0c48
2 changed files with 10 additions and 2 deletions

View file

@ -250,3 +250,10 @@ class MemberValues(object):
except Exception: except Exception:
LOGGER.exception('list_users failed') LOGGER.exception('list_users failed')
return [] return []
def get_ldap_admins():
session = ldap.initialize(settings.CBASE_LDAP_URL)
session.search('cn=ldap_admins,ou=groups,dc=c-base,dc=org', ldap.SCOPE_BASE)
result = session.result()
return [x.decode().split(',')[0].split('=')[1] for x in result[1][0][1].get('member')]

View file

@ -18,7 +18,7 @@ from django.shortcuts import render
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
import smbpasswd import smbpasswd
from account.cbase_members import retrieve_member, MemberValues from account.cbase_members import retrieve_member, MemberValues, get_ldap_admins
from account.forms import GastroPinForm, WlanPresenceForm, LoginForm, \ from account.forms import GastroPinForm, WlanPresenceForm, LoginForm, \
PasswordForm, RFIDForm, NRF24Form, SIPPinForm, CLabPinForm, AdminForm, \ PasswordForm, RFIDForm, NRF24Form, SIPPinForm, CLabPinForm, AdminForm, \
PreferredEmailForm PreferredEmailForm
@ -31,7 +31,8 @@ def landingpage(request):
login_form = LoginForm() login_form = LoginForm()
try: try:
# just in case the group hasn't yet been synced # just in case the group hasn't yet been synced
admins = Group.objects.get(name="ldap_admins").user_set.all() # admins = Group.objects.filter(name__in=get_ldap_admins()).user_set.all()
admins = get_ldap_admins()
except Exception: except Exception:
# else provide an emtpy list # else provide an emtpy list
admins = [] admins = []