mirror of
https://github.com/kakwa/ldapcherry
synced 2024-11-22 01:14:21 +01:00
better behavior if user doesn't exist in one backend
This commit is contained in:
parent
f21122b219
commit
d4235bc33c
@ -661,8 +661,16 @@ class LdapCherry(object):
|
||||
if b not in badd:
|
||||
badd[b] = {}
|
||||
badd[b][backends[b]] = params['attrs'][attr]
|
||||
added = False
|
||||
for b in badd:
|
||||
try:
|
||||
self.backends[b].add_user(badd[b])
|
||||
added = True
|
||||
except UserAlreadyExists as e:
|
||||
self._add_notification('User already exists in backend "' + b + '"')
|
||||
if not added:
|
||||
raise e
|
||||
|
||||
|
||||
key = self.attributes.get_key()
|
||||
username = params['attrs'][key]
|
||||
@ -719,7 +727,11 @@ class LdapCherry(object):
|
||||
badd[b] = {}
|
||||
badd[b][backends[b]] = params['attrs'][attr]
|
||||
for b in badd:
|
||||
try:
|
||||
self.backends[b].set_attrs(username, badd[b])
|
||||
except UserDoesntExist as e:
|
||||
self._add_notification('User does not exist in backend "' + b + '"')
|
||||
|
||||
return badd
|
||||
|
||||
def _selfmodify(self, params):
|
||||
@ -1096,6 +1108,15 @@ class LdapCherry(object):
|
||||
display_names = {}
|
||||
for r in self.roles.flatten:
|
||||
display_names[r] = self.roles.flatten[r]['display_name']
|
||||
|
||||
if user is None:
|
||||
cherrypy.response.status = 400
|
||||
return self.temp['error.tmpl'].render(
|
||||
is_admin=is_admin,
|
||||
alert='warning',
|
||||
message="No user requested"
|
||||
)
|
||||
|
||||
user_attrs = self._get_user(user)
|
||||
if user_attrs == {}:
|
||||
cherrypy.response.status = 400
|
||||
|
@ -342,6 +342,8 @@ class Backend(ldapcherry.backend.Backend):
|
||||
""" Set user attributes"""
|
||||
ldap_client = self._bind()
|
||||
tmp = self._get_user(self._str(username), ALL_ATTRS)
|
||||
if tmp is None:
|
||||
raise UserDoesntExist(username, self.backend_name)
|
||||
dn = self._str(tmp[0])
|
||||
old_attrs = tmp[1]
|
||||
for attr in attrs:
|
||||
|
@ -288,7 +288,12 @@ class TestError(object):
|
||||
def testNoneType(self):
|
||||
app = LdapCherry()
|
||||
loadconf('./tests/cfg/ldapcherry_test.ini', app)
|
||||
app.modify('ssmith'),
|
||||
app.modify('ssmith')
|
||||
|
||||
def testNoneModify(self):
|
||||
app = LdapCherry()
|
||||
loadconf('./tests/cfg/ldapcherry_test.ini', app)
|
||||
app.modify(user=None)
|
||||
|
||||
@slow_disabled
|
||||
def testNaughtyStrings(self):
|
||||
@ -317,6 +322,32 @@ class TestError(object):
|
||||
inv.add_user(addefault_user.copy())
|
||||
app._deleteuser(u'☭default_user')
|
||||
|
||||
@travis_disabled
|
||||
def testAddUserOneBackend(self):
|
||||
app = LdapCherry()
|
||||
loadconf('./tests/cfg/ldapcherry_adldap.cfg', app)
|
||||
inv = ldapcherry.backend.backendAD.Backend(adcfg, cherrypy.log, u'test☭', adattr, 'sAMAccountName')
|
||||
inv.add_user(addefault_user.copy())
|
||||
form = {'groups': {}, 'attrs': {'password1': u'password☭P455', 'password2': u'password☭P455', 'cn': u'Test ☭ Test', 'name': u'Test ☭', 'uidNumber': u'1000', 'gidNumber': u'1000', 'home': u'/home/test', 'first-name': u'Test ☭', 'email': u'test@test.fr', 'uid': u'☭default_user'}, 'roles': {'admin-lv3': u'on', 'admin-lv2': u'on', 'users': u'on'}}
|
||||
app._adduser(form)
|
||||
app._deleteuser(u'☭default_user')
|
||||
|
||||
@travis_disabled
|
||||
def testModifyUserOneBackend(self):
|
||||
app = LdapCherry()
|
||||
loadconf('./tests/cfg/ldapcherry_adldap.cfg', app)
|
||||
inv = ldapcherry.backend.backendAD.Backend(adcfg, cherrypy.log, u'test☭', adattr, 'sAMAccountName')
|
||||
try:
|
||||
app._deleteuser(u'☭default_user')
|
||||
except:
|
||||
pass
|
||||
inv.add_user(addefault_user.copy())
|
||||
modify_form = { 'attrs': {'first-name': u'Test42 ☭', 'uid': u'☭default_user'}, 'roles': { 'admin-lv3': u'on'}}
|
||||
app._modify(modify_form)
|
||||
app._deleteuser(u'☭default_user')
|
||||
|
||||
|
||||
|
||||
def testLogger(self):
|
||||
app = LdapCherry()
|
||||
loadconf('./tests/cfg/ldapcherry.ini', app)
|
||||
|
Loading…
Reference in New Issue
Block a user