summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarian Sigler <m@qjym.de>2012-09-28 01:32:27 +0200
committerMarian Sigler <m@qjym.de>2012-09-28 01:32:27 +0200
commit84546333cae64f9ea0765e3cc36f1f92674a1a08 (patch)
treea2a283aab2fd01e2dc0215471b4d8ed5456216b9
parent0722c5e49e29ad6eab2d23f0e8f3d59efb52bd2e (diff)
downloadweb-84546333cae64f9ea0765e3cc36f1f92674a1a08.tar.gz
web-84546333cae64f9ea0765e3cc36f1f92674a1a08.tar.bz2
web-84546333cae64f9ea0765e3cc36f1f92674a1a08.zip
create servicePassword ldap object if it does not already exist
-rw-r--r--account.py7
-rw-r--r--app.py5
2 files changed, 8 insertions, 4 deletions
diff --git a/account.py b/account.py
index 1361669..f25e170 100644
--- a/account.py
+++ b/account.py
@@ -84,7 +84,7 @@ class AccountService:
dn = self._format_dn([('ou', 'services')])
filterstr = '(uid=%s)' % self._escape(uid)
- data_service = self.connection.search_s(dn,ldap.SCOPE_SUBTREE,filterstr)
+ data_service = self.connection.search_s(dn, ldap.SCOPE_SUBTREE, filterstr)
services = []
for entry in data_service:
@@ -269,6 +269,11 @@ class AccountService:
for service, passwords in account.new_password_services.items():
dn = self._format_dn([('uid',account.uid),('cn',service),('ou','services')])
+
+ if service not in account.services:
+ attr = [('objectClass', ['top', 'servicePassword']), ('uid', account.uid)]
+ self.connection.add_s(dn, attr)
+
old, new = passwords
if as_admin:
self.connection.passwd_s(dn, None, new)
diff --git a/app.py b/app.py
index 3b4c202..4a3a962 100644
--- a/app.py
+++ b/app.py
@@ -204,11 +204,10 @@ def settings():
field = form.get_servicepassword(service.id)
if field.data:
changed = True
- g.user.change_password(field.data, session['password'], service.id)
-
+ g.user.change_password(field.data, None, service.id)
if changed:
- g.ldap.update(g.user)
+ g.ldap.update(g.user, as_admin=True) #XXX: as_admin wieder wegmachen sobald ACLs richtig gesetzt sind
return redirect(url_for('settings'))
else:
flash(u'Nichts geƤndert.')