From 84546333cae64f9ea0765e3cc36f1f92674a1a08 Mon Sep 17 00:00:00 2001 From: Marian Sigler Date: Fri, 28 Sep 2012 01:32:27 +0200 Subject: create servicePassword ldap object if it does not already exist --- account.py | 7 ++++++- app.py | 5 ++--- 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.') -- cgit v1.2.3-1-g7c22