diff --git a/uffd/user/views_user.py b/uffd/user/views_user.py index 879238298f4dbf1a4245d1251b22675bcd8db211..989310173794f02134657766a8a6e86f9af36386 100644 --- a/uffd/user/views_user.py +++ b/uffd/user/views_user.py @@ -105,8 +105,18 @@ def delete(uid): conn = get_conn() conn.search(current_app.config["LDAP_BASE_USER"], '(&(objectclass=person)(uidNumber={}))'.format((escape_filter_chars(uid)))) assert len(conn.entries) == 1 + user = User.from_ldap(conn.entries[0]) + + session = db.session + roles = Role.query.all() + for role in roles: + if user.dn in role.member_dns(): + role.del_member(user) + if conn.delete(conn.entries[0].entry_dn): flash('Deleted user') + session.commit() else: flash('Could not delete user: {}'.format(conn.result['message'])) + session.rollback() return redirect(url_for('user.index'))