From 61364658210b18177ef5fe7061681ef4580d1e58 Mon Sep 17 00:00:00 2001
From: nd <git@notandy.de>
Date: Fri, 7 Aug 2020 13:05:00 +0200
Subject: [PATCH] deleting a user removes the user from roles as well, closes
 #6

---
 uffd/user/views_user.py | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/uffd/user/views_user.py b/uffd/user/views_user.py
index 87923829..98931017 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'))
-- 
GitLab