Merge branch 'MDL-67818-check-api-fixes' of https://github.com/brendanheywood/moodle
authorAndrew Nicols <andrew@nicols.co.uk>
Tue, 7 Apr 2020 02:09:34 +0000 (10:09 +0800)
committerAndrew Nicols <andrew@nicols.co.uk>
Tue, 7 Apr 2020 02:09:34 +0000 (10:09 +0800)
25 files changed:
auth/none/classes/check/noauth.php
auth/none/lang/en/auth_none.php
lib/classes/check/access/defaultuserrole.php
lib/classes/check/access/frontpagerole.php
lib/classes/check/access/guestrole.php
lib/classes/check/access/riskadmin.php
lib/classes/check/access/riskbackup.php
lib/classes/check/access/riskxss.php
lib/classes/check/check.php
lib/classes/check/environment/configrw.php
lib/classes/check/environment/displayerrors.php
lib/classes/check/environment/nodemodules.php
lib/classes/check/environment/preventexecpath.php
lib/classes/check/environment/unsecuredataroot.php
lib/classes/check/environment/vendordir.php
lib/classes/check/http/cookiesecure.php
lib/classes/check/security/crawlers.php
lib/classes/check/security/emailchangeconfirmation.php
lib/classes/check/security/embed.php
lib/classes/check/security/mediafilterswf.php
lib/classes/check/security/openprofiles.php
lib/classes/check/security/passwordpolicy.php
lib/classes/check/security/webcron.php
lib/outputrenderers.php
report/security/index.php

index 87384a2..7e57907 100644 (file)
@@ -39,12 +39,12 @@ use core\check\result;
 class noauth extends \core\check\check {
 
     /**
-     * Constructor
+     * A link to a place to action this
+     *
+     * @return action_link
      */
-    public function __construct() {
-        $this->id = 'noauth';
-        $this->name = get_string('check_noauth_name', 'auth_none');
-        $this->actionlink = new \action_link(
+    public function get_action_link(): ?\action_link {
+        return new \action_link(
             new \moodle_url('/admin/settings.php?section=manageauths'),
             get_string('authsettings', 'admin'));
     }
@@ -54,15 +54,14 @@ class noauth extends \core\check\check {
      * @return result
      */
     public function get_result(): result {
-
         if (is_enabled_auth('none')) {
             $status = result::ERROR;
-            $summary = get_string('check_noauth_error', 'auth_none');
+            $summary = get_string('checknoautherror', 'auth_none');
         } else {
             $status = result::OK;
-            $summary = get_string('check_noauth_ok', 'auth_none');
+            $summary = get_string('checknoauthok', 'auth_none');
         }
-        $details = get_string('check_noauth_details', 'auth_none');
+        $details = get_string('checknoauthdetails', 'auth_none');
 
         return new result($status, $summary, $details);
     }
index 34a2a24..4ae1975 100644 (file)
@@ -25,7 +25,7 @@
 $string['auth_nonedescription'] = 'Users can sign in and create valid accounts immediately, with no authentication against an external server and no confirmation via email.  Be careful using this option - think of the security and administration problems this could cause.';
 $string['pluginname'] = 'No authentication';
 $string['privacy:metadata'] = 'The No authentication plugin does not store any personal data.';
-$string['check_noauth_details'] = '<p>The <em>No authentication</em> plugin is not intended for production sites. Please disable it unless this is a development test site.</p>';
-$string['check_noauth_error'] = 'The No authentication plugin cannot be used on production sites.';
-$string['check_noauth_name'] = 'No authentication';
-$string['check_noauth_ok'] = 'The no authentication plugin is disabled.';
+$string['checknoauthdetails'] = '<p>The <em>No authentication</em> plugin is not intended for production sites. Please disable it unless this is a development test site.</p>';
+$string['checknoautherror'] = 'The No authentication plugin cannot be used on production sites.';
+$string['checknoauth'] = 'No authentication';
+$string['checknoauthok'] = 'The no authentication plugin is disabled.';
index c33f62f..da15a57 100644 (file)
@@ -41,13 +41,22 @@ use core\check\result;
 class defaultuserrole extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
+    public function get_name(): string {
+        return get_string('check_defaultuserrole_name', 'report_security');
+    }
+
+    /**
+     * A link to a place to action this
+     *
+     * @return action_link|null
+     */
+    public function get_action_link(): ?\action_link {
         global $CFG;
-        $this->id = 'defaultuserrole';
-        $this->name = get_string('check_defaultuserrole_name', 'report_security');
-        $this->actionlink = new \action_link(
+        return new \action_link(
             new \moodle_url('/admin/roles/define.php?action=view&roleid=' . $CFG->defaultuserroleid),
             get_string('userpolicies', 'admin'));
     }
index 8defa5f..5fcd3d8 100644 (file)
@@ -41,12 +41,21 @@ use core\check\result;
 class frontpagerole extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
-        $this->id = 'frontpagerole';
-        $this->name = get_string('check_frontpagerole_name', 'report_security');
-        $this->actionlink = new \action_link(
+    public function get_name(): string {
+        return get_string('check_frontpagerole_name', 'report_security');
+    }
+
+    /**
+     * A link to a place to action this
+     *
+     * @return action_link|null
+     */
+    public function get_action_link(): ?\action_link {
+        return new \action_link(
             new \moodle_url('/admin/settings.php?section=frontpagesettings#admin-defaultfrontpageroleid'),
             get_string('frontpagesettings', 'admin'));
     }
index cea0038..99d1359 100644 (file)
@@ -41,13 +41,21 @@ use core\check\result;
 class guestrole extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
+    public function get_name(): string {
+        return get_string('check_guestrole_name', 'report_security');
+    }
 
-        $this->id = 'guestrole';
-        $this->name = get_string('check_guestrole_name', 'report_security');
-        $this->actionlink = new \action_link(
+    /**
+     * A link to a place to action this
+     *
+     * @return action_link|null
+     */
+    public function get_action_link(): ?\action_link {
+        return new \action_link(
             new \moodle_url('/admin/settings.php?section=userpolicies'),
             get_string('userpolicies', 'admin'));
     }
index 9a67a25..7c0729c 100644 (file)
@@ -41,12 +41,21 @@ use core\check\result;
 class riskadmin extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
-        $this->id = 'riskadmin';
-        $this->name = get_string('check_riskadmin_name', 'report_security');
-        $this->actionlink = new \action_link(
+    public function get_name(): string {
+        return get_string('check_riskadmin_name', 'report_security');
+    }
+
+    /**
+     * A link to a place to action this
+     *
+     * @return action_link|null
+     */
+    public function get_action_link(): ?\action_link {
+        return new \action_link(
             new \moodle_url('/admin/roles/admins.php'),
             get_string('siteadministrators', 'role'));
     }
index 6b33b24..630efc3 100644 (file)
@@ -39,13 +39,21 @@ use core\check\result;
 class riskbackup extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
+    public function get_name(): string {
+        return get_string('check_riskbackup_name', 'report_security');
+    }
 
-        $this->id = 'riskbackup';
-        $this->name = get_string('check_riskbackup_name', 'report_security');
-        $this->actionlink = new \action_link(
+    /**
+     * A link to a place to action this
+     *
+     * @return action_link|null
+     */
+    public function get_action_link(): ?\action_link {
+        return new \action_link(
             new \moodle_url('/admin/roles/manage.php'),
             get_string('manageroles', 'role'));
     }
index a959d20..3ce984a 100644 (file)
@@ -46,13 +46,21 @@ use core\check\result;
 class riskxss extends \core\check\check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
+    public function get_name(): string {
+        return get_string('check_riskxss_name', 'report_security');
+    }
 
-        $this->id = 'riskxss';
-        $this->name = get_string('check_riskxss_name', 'report_security');
-        $this->actionlink = new \action_link(
+    /**
+     * A link to a place to action this
+     *
+     * @return action_link|null
+     */
+    public function get_action_link(): ?\action_link {
+        return new \action_link(
             new \moodle_url('/admin/roles/manage.php'),
             get_string('manageroles', 'role'));
     }
index 97ecfd1..8042fe8 100644 (file)
@@ -41,21 +41,6 @@ abstract class check {
      */
     protected $component = 'core';
 
-    /**
-     * @var string $id - Should be unique identifier within a component.
-     */
-    protected $id = '';
-
-    /**
-     * @var string $name - Name for the check, should be the same regardless of state.
-     */
-    protected $name = '';
-
-    /**
-     * @var action_link - an optional link to a place to address the check.
-     */
-    protected $actionlink = null;
-
     /**
      * Get the frankenstyle component name
      *
@@ -77,10 +62,16 @@ abstract class check {
     /**
      * Get the check's id
      *
-     * @return string must be unique for it's component
+     * This defaults to the base name of the class which is ok in the most
+     * cases but if you have a check which can have multiple instances then
+     * you should override this to be unique.
+     *
+     * @return string must be unique within a component
      */
     public function get_id(): string {
-        return $this->id;
+        $class = get_class($this);
+        $id = explode("\\", $class);
+        return end($id);
     }
 
     /**
@@ -103,7 +94,8 @@ abstract class check {
      * @return string
      */
     public function get_name(): string {
-        return $this->name;
+        $id = $this->get_id();
+        return get_string("check{$id}", $this->get_component());
     }
 
     /**
@@ -112,7 +104,7 @@ abstract class check {
      * @return action_link|null
      */
     public function get_action_link(): ?\action_link {
-        return $this->actionlink;
+        return null;
     }
 
     /**
index c7f6be3..32d4221 100644 (file)
@@ -41,12 +41,12 @@ use core\check\result;
 class configrw extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
-        global $CFG;
-        $this->id = 'configrw';
-        $this->name = get_string('check_configrw_name', 'report_security');
+    public function get_name(): string {
+        return get_string('check_configrw_name', 'report_security');
     }
 
     /**
index 4db5272..e99c669 100644 (file)
@@ -47,12 +47,12 @@ use core\check\check;
 class displayerrors extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
-
-        $this->id = 'displayerrors';
-        $this->name = get_string('check_displayerrors_name', 'report_security');
+    public function get_name(): string {
+        return get_string('check_displayerrors_name', 'report_security');
     }
 
     /**
index 1d72bf1..34780d1 100644 (file)
@@ -41,12 +41,12 @@ use core\check\result;
 class nodemodules extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
-        global $CFG;
-        $this->id = 'nodemodules';
-        $this->name = get_string('check_nodemodules_name', 'report_security');
+    public function get_name(): string {
+        return get_string('check_nodemodules_name', 'report_security');
     }
 
     /**
index 0452a51..a6f90cd 100644 (file)
@@ -41,13 +41,12 @@ use core\check\result;
 class preventexecpath extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
-
-        global $CFG;
-        $this->id = 'preventexecpath';
-        $this->name = get_string('check_preventexecpath_name', 'report_security');
+    public function get_name(): string {
+        return get_string('check_preventexecpath_name', 'report_security');
     }
 
     /**
index ef1ea1f..c243e27 100644 (file)
@@ -40,14 +40,12 @@ use core\check\result;
 class unsecuredataroot extends \core\check\check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
-
-        global $CFG;
-
-        $this->id = 'unsecuredataroot';
-        $this->name = get_string('check_unsecuredataroot_name', 'report_security');
+    public function get_name(): string {
+        return get_string('check_unsecuredataroot_name', 'report_security');
     }
 
     /**
index 6c3274c..55da2bc 100644 (file)
@@ -41,12 +41,12 @@ use core\check\result;
 class vendordir extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
-        global $CFG;
-        $this->id = 'vendordir';
-        $this->name = get_string('check_vendordir_name', 'report_security');
+    public function get_name(): string {
+        return get_string('check_vendordir_name', 'report_security');
     }
 
     /**
index 0a63cbd..3f403be 100644 (file)
@@ -45,13 +45,21 @@ use core\check\result;
 class cookiesecure extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
+    public function get_name(): string {
+        return get_string('check_cookiesecure_name', 'report_security');
+    }
 
-        $this->id = 'cookiesecure';
-        $this->name = get_string('check_cookiesecure_name', 'report_security');
-        $this->actionlink = new \action_link(
+    /**
+     * A link to a place to action this
+     *
+     * @return action_link|null
+     */
+    public function get_action_link(): ?\action_link {
+        return new \action_link(
             new \moodle_url('/admin/settings.php?section=httpsecurity#admin-cookiesecure'),
             get_string('httpsecurity', 'admin'));
     }
index 2ed2b5b..e6b0040 100644 (file)
@@ -47,13 +47,21 @@ use core\check\result;
 class crawlers extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
+    public function get_name(): string {
+        return get_string('check_crawlers_name', 'report_security');
+    }
 
-        $this->id = 'crawlers';
-        $this->name = get_string('check_crawlers_name', 'report_security');
-        $this->actionlink = new \action_link(
+    /**
+     * A link to a place to action this
+     *
+     * @return action_link|null
+     */
+    public function get_action_link(): ?\action_link {
+        return new \action_link(
             new \moodle_url('/admin/settings.php?section=sitepolicies#admin-opentowebcrawlers'),
             get_string('sitepolicies', 'admin'));
     }
index 6328b9e..8c4f106 100644 (file)
@@ -41,12 +41,21 @@ use core\check\result;
 class emailchangeconfirmation extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
-        $this->id = 'emailchangeconfirmation';
-        $this->name = get_string('check_emailchangeconfirmation_name', 'report_security');
-        $this->actionlink = new \action_link(
+    public function get_name(): string {
+        return get_string('check_emailchangeconfirmation_name', 'report_security');
+    }
+
+    /**
+     * A link to a place to action this
+     *
+     * @return action_link|null
+     */
+    public function get_action_link(): ?\action_link {
+        return new \action_link(
             new \moodle_url('/admin/settings.php?section=sitepolicies#admin-emailchangeconfirmation'),
             get_string('sitepolicies', 'admin'));
     }
index d8e305c..bfdd767 100644 (file)
@@ -41,12 +41,21 @@ use core\check\result;
 class embed extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
-        $this->id = 'embed';
-        $this->name = get_string('check_embed_name', 'report_security');
-        $this->actionlink = new \action_link(
+    public function get_name(): string {
+        return get_string('check_embed_name', 'report_security');
+    }
+
+    /**
+     * A link to a place to action this
+     *
+     * @return action_link|null
+     */
+    public function get_action_link(): ?\action_link {
+        return new \action_link(
             new \moodle_url('/admin/settings.php?section=sitepolicies#admin-allowobjectembed'),
             get_string('sitepolicies', 'admin'));
     }
index 38dabc3..78632b9 100644 (file)
@@ -41,13 +41,21 @@ use core\check\result;
 class mediafilterswf extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
-        global $CFG;
-        $this->id = 'mediafilterswf';
-        $this->name = get_string('check_mediafilterswf_name', 'report_security');
-        $this->actionlink = new \action_link(
+    public function get_name(): string {
+        return get_string('check_mediafilterswf_name', 'report_security');
+    }
+
+    /**
+     * A link to a place to action this
+     *
+     * @return action_link|null
+     */
+    public function get_action_link(): ?\action_link {
+        return new \action_link(
             new \moodle_url('/admin/settings.php?section=managemediaplayers'),
             get_string('managemediaplayers', 'media'));
     }
index dc252c7..b6d5faa 100644 (file)
@@ -41,13 +41,21 @@ use core\check\result;
 class openprofiles extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
+    public function get_name(): string {
+        return get_string('check_openprofiles_name', 'report_security');
+    }
 
-        $this->id = 'openprofiles';
-        $this->name = get_string('check_openprofiles_name', 'report_security');
-        $this->actionlink = new \action_link(
+    /**
+     * A link to a place to action this
+     *
+     * @return action_link|null
+     */
+    public function get_action_link(): ?\action_link {
+        return new \action_link(
             new \moodle_url('/admin/settings.php?section=sitepolicies#admin-forcelogin'),
             get_string('sitepolicies', 'admin'));
     }
index 8d1000a..cc5d1b1 100644 (file)
@@ -41,12 +41,21 @@ use core\check\result;
 class passwordpolicy extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
-        $this->id = 'passwordpolicy';
-        $this->name = get_string('check_passwordpolicy_name', 'report_security');
-        $this->actionlink = new \action_link(
+    public function get_name(): string {
+        return get_string('check_passwordpolicy_name', 'report_security');
+    }
+
+    /**
+     * A link to a place to action this
+     *
+     * @return action_link|null
+     */
+    public function get_action_link(): ?\action_link {
+        return new \action_link(
             new \moodle_url('/admin/settings.php?section=sitepolicies#admin-passwordpolicy'),
             get_string('sitepolicies', 'admin'));
     }
index 0b4f862..f1c6f17 100644 (file)
@@ -41,14 +41,23 @@ use core\check\result;
 class webcron extends check {
 
     /**
-     * Constructor
+     * Get the short check name
+     *
+     * @return string
      */
-    public function __construct() {
-        $this->id = 'webcron';
-        $this->name = get_string('check_webcron_name', 'report_security');
-        $this->actionlink = new \action_link(
-            new \moodle_url('/admin/settings.php?section=sitepolicies#admin-cronclionly'),
-            get_string('sitepolicies', 'admin'));
+    public function get_name(): string {
+        return get_string('check_webcron_name', 'report_security');
+    }
+
+    /**
+     * A link to a place to action this
+     *
+     * @return action_link|null
+     */
+    public function get_action_link(): ?\action_link {
+        return new \action_link(
+           new \moodle_url('/admin/settings.php?section=sitepolicies#admin-cronclionly'),
+           get_string('sitepolicies', 'admin'));
     }
 
     /**
index cd34fc5..65a99c4 100644 (file)
@@ -1687,7 +1687,7 @@ class core_renderer extends renderer_base {
      * @param result $result
      * @return string HTML fragment
      */
-    protected function render_result(core\check\result $result) {
+    protected function render_check_result(core\check\result $result) {
         return $this->render_from_template($result->get_template_name(), $result->export_for_template($this));
     }
 
@@ -1697,8 +1697,8 @@ class core_renderer extends renderer_base {
      * @param result $result
      * @return string HTML fragment
      */
-    public function result(core\check\result $result) {
-        return $this->render_result($result);
+    public function check_result(core\check\result $result) {
+        return $this->render_check_result($result);
     }
 
     /**
index 5624bd8..6a8feae 100644 (file)
@@ -87,7 +87,7 @@ foreach ($checks as $check) {
     $link = new \moodle_url('/report/security/index.php', ['detail' => $ref]);
 
     $row = [];
-    $row[] = $OUTPUT->result($result);
+    $row[] = $OUTPUT->check_result($result);
     $row[] = $OUTPUT->action_link($link, $check->get_name());
 
     $row[] = $result->get_summary();