File tree Expand file tree Collapse file tree
flask_appbuilder/security/sqla Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -284,6 +284,15 @@ def count_users(self):
284284
285285 def update_user (self , user ):
286286 try :
287+ # Load existing user from DB to detect role/group changes
288+ existing_user = self .session .get (self .user_model , user .id )
289+
290+ roles_changed = set (existing_user .roles ) != set (user .roles )
291+ groups_changed = set (existing_user .groups ) != set (user .groups )
292+
293+ if roles_changed or groups_changed :
294+ user .changed_on = datetime .utcnow () # pragma: no cover
295+
287296 self .session .merge (user )
288297 self .session .commit ()
289298 log .info (c .LOGMSG_INF_SEC_UPD_USER , user )
Original file line number Diff line number Diff line change 1+ def test_user_changed_on_updates_on_role_change (appbuilder ):
2+ sm = appbuilder .sm
3+
4+ role = sm .add_role ("TestRole" )
5+
6+ user = sm .add_user (
7+ username = "test_user" ,
8+ first_name = "Test" ,
9+ last_name = "User" ,
10+ email = "test_user@test.com" ,
11+ password = "password" ,
12+ )
13+
14+ before = user .changed_on
15+ assert before is not None
16+
17+ user .roles .append (role )
18+ sm .update_user (user )
19+
20+ assert user .changed_on > before
You can’t perform that action at this time.
0 commit comments