Modified getting information about users from the LDAP and bugfix create link

develop
Самоукин Алексей 14 years ago
parent e358500edb
commit 23ccd6a030

@ -144,7 +144,7 @@ class ldapUser(_error):
return groupsDNs
return False
def getUserLdapInfo(self, userName):
def getUserLdapInfo(self, userName, shadowAttr=False):
"""Выдаем информацию о пользователе из LDAP"""
connectData = self.getBindConnectData()
if not connectData:
@ -159,39 +159,59 @@ class ldapUser(_error):
"uid=%s" %userName, None)
if not searchUser:
return False
uid = False
gid = False
fullName = ""
mail = ""
jid = ""
group = ""
if 'uidNumber' in searchUser[0][0][1]:
uid = searchUser[0][0][1]['uidNumber'][0]
if 'gidNumber' in searchUser[0][0][1]:
gid = searchUser[0][0][1]['gidNumber'][0]
for groupDN in groupsDNs:
searchGroup = self.ldapObj.ldapSearch(groupDN,
convertDict = {'uid':('user','uidNumber'),
'gid':('user','gidNumber'),
'fullName':('user','cn'),
'mail':('user','mail'),
'jid':('user','registeredAddress'),
'home':('user','homeDirectory'),
'group':('group','cn')}
if shadowAttr:
convertDict.update({'loginShell':('user','loginShell'),
'shadowLastChange':('user','shadowLastChange'),
'shadowMin':('user','shadowMin'),
'shadowMax':('user','shadowMax'),
'shadowWarning':('user','shadowWarning'),
'shadowExpire':('user','shadowExpire'),
'shadowFlag':('user','shadowFlag')})
listUserAttr = map(lambda x: x[0],
filter(lambda x: x[1][0]=="user",
convertDict.items()))
listGroupAttr = map(lambda x: x[0],
filter(lambda x: x[1][0]=="group",
convertDict.items()))
uid = ""
gid = ""
dictOut = {}
for dictAttr in listUserAttr:
ldapAttr = convertDict[dictAttr][1]
if ldapAttr in searchUser[0][0][1]:
dictOut[dictAttr] = searchUser[0][0][1][ldapAttr][0]
else:
dictOut[dictAttr] = ""
if dictAttr == 'uid':
uid = dictOut[dictAttr]
if dictAttr == 'gid':
gid = dictOut[dictAttr]
if gid:
for dictAttr in listGroupAttr:
searchGroup = []
ldapAttr = convertDict[dictAttr][1]
for groupDN in groupsDNs:
searchGroup = self.ldapObj.ldapSearch(groupDN,
ldap.SCOPE_ONELEVEL,
"gidNumber=%s" %gid, ['cn'])
"gidNumber=%s" %gid, None)
if searchGroup:
break
if searchGroup:
group = searchGroup[0][0][1]['cn'][0]
break
if 'cn' in searchUser[0][0][1]:
fullName = searchUser[0][0][1]['cn'][0]
if 'mail' in searchUser[0][0][1]:
mail = searchUser[0][0][1]['mail'][0]
if 'registeredAddress' in searchUser[0][0][1]:
jid = searchUser[0][0][1]['registeredAddress'][0]
if 'homeDirectory' in searchUser[0][0][1]:
home = searchUser[0][0][1]['homeDirectory'][0]
if ldapAttr in searchGroup[0][0][1]:
dictOut[dictAttr] = searchGroup[0][0][1][ldapAttr][0]
else:
dictOut[dictAttr] = ""
else:
dictOut[dictAttr] = ""
if uid and gid:
return {"uid":uid,
"gid":gid,
"fullName":fullName,
"mail":mail,
"jid":jid,
"home":home,
"group":group}
return dictOut
else:
return {}

@ -4208,6 +4208,13 @@ re.M|re.S)
preReturn(pathProg)
return ([], False)
if flagSymlink:
if objHeadNew.body.strip():
self.setError(_("Error in template") + ": " +\
nameFileTemplate)
self.setError(_("In template to create a link is found text \
after title"))
preReturn(pathProg)
return ([], False)
if os.path.exists(prevOldFile) or os.path.islink(prevOldFile):
try:
if os.path.islink(prevOldFile):
@ -4236,9 +4243,6 @@ re.M|re.S)
"%s -> %s"%(prevOldFile, pathOldFile))
preReturn(pathProg)
return ([], False)
if not objHeadNew.body.strip():
preReturn(pathProg)
return ([], False)
else:
applyFiles = [pathOldFile]
if pathProg:

Loading…
Cancel
Save