This is an automated email from the ASF dual-hosted git repository.

dill0wn pushed a commit to branch dw/8451
in repository https://gitbox.apache.org/repos/asf/allura.git

commit 73fdcca61aabdf68aed6dc5a39938bb06dcd6ea4
Author: Dillon Walls <[email protected]>
AuthorDate: Fri Aug 5 19:05:44 2022 +0000

    [#8451] record blocking users in audit log
---
 Allura/allura/app.py                         | 7 +++++--
 Allura/allura/tests/functional/test_admin.py | 8 +++++++-
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/Allura/allura/app.py b/Allura/allura/app.py
index e2e34db0d..fef1e6e37 100644
--- a/Allura/allura/app.py
+++ b/Allura/allura/app.py
@@ -868,10 +868,13 @@ class DefaultAdminController(BaseController, 
AdminControllerMixin):
         user = model.User.by_username(username)
         if not user:
             return dict(error='User "%s" not found' % username)
-        ace = model.ACE.deny(
-            model.ProjectRole.by_user(user, upsert=True)._id, perm, reason)
+        ace = model.ACE.deny(model.ProjectRole.by_user(user, upsert=True)._id, 
perm, reason)
         if not model.ACL.contains(ace, self.app.acl):
             self.app.acl.append(ace)
+            model.AuditLog.log('blocked user "{}" from {} for reason: 
"{}"'.format(
+                username,
+                self.app.config.options['mount_point'],
+                reason))
             return dict(user_id=str(user._id), username=user.username, 
reason=reason)
         return dict(error='User "%s" already blocked' % user.username)
 
diff --git a/Allura/allura/tests/functional/test_admin.py 
b/Allura/allura/tests/functional/test_admin.py
index 3a300e8c1..8237bf332 100644
--- a/Allura/allura/tests/functional/test_admin.py
+++ b/Allura/allura/tests/functional/test_admin.py
@@ -211,9 +211,15 @@ class TestProjectAdmin(TestController):
             r.json, dict(user_id=str(user._id), username='test-admin', 
reason='Comment'))
         user = M.User.by_username('test-admin')
         admin_role = M.ProjectRole.by_user(user)
-        app = M.Project.query.get(shortname='test').app_instance('wiki')
+        project = M.Project.query.get(shortname='test')
+        app = project.app_instance('wiki')
         ace = M.ACL.contains(M.ACE.deny(admin_role._id, 'read'), app.acl)
         assert_equals(ace.reason, 'Comment')
+        audit_log = M.AuditLog.query.find(
+            {'project_id': project._id}).sort('_id', -1).first()
+        assert 'blocked user "test-admin"' in audit_log.message
+        assert 'for reason: "Comment"' in audit_log.message
+
         r = self.app.get('/admin/wiki/permissions')
         assert '<input type="checkbox" name="user_id" value="%s">test-admin 
(Comment)' % user._id in r
 

Reply via email to