security/core#111 Add in Status check for if Anonymous Users have edit contributions...
authorSeamus Lee <seamuslee001@gmail.com>
Wed, 16 Mar 2022 08:33:54 +0000 (01:33 -0700)
committerSeamus Lee <seamuslee001@gmail.com>
Wed, 16 Mar 2022 23:26:13 +0000 (10:26 +1100)
CRM/Utils/Check/Component/Security.php

index e6ce5a07096a5d9e8dbd1951d91ef59290e4f2bd..8a35354d4ac4cc34f80e89f1ddcd58ea0a8e13a4 100644 (file)
@@ -292,6 +292,33 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component {
     return $messages;
   }
 
+  /**
+   * Check to see if anonymous user has edit contributions permission
+   * @return CRM_Utils_Check_Message[]
+   */
+  public function checkAnonEditContribution() {
+    $messages = [];
+    $permissions = [];
+    if (CRM_Core_Config::singleton()->userPermissionClass->check('edit contributions', 0)) {
+      $permissions[] = 'edit contributions';
+    }
+    if (CRM_Core_Config::singleton()->userPermissionClass->check('access CiviContribute', 0)) {
+      $permissions[] = 'access CiviContribute';
+    }
+    if (!empty($permissions)) {
+      $messages[] = new CRM_Utils_Check_Message(
+        __FUNCTION__,
+        ts('Anonymous users have permissions (%1). This may cause leakage of information in regards to recurring contributions.', [
+          1 => implode(', ', $permissions),
+        ]),
+        ts('Security Warning'),
+        \Psr\Log\LogLevel::WARNING,
+        'fa-lock'
+      );
+    }
+    return $messages;
+  }
+
   /**
    * Determine whether $url is a public, browsable listing for $dir
    *