From efbe24f5a8781540a9b91e12207792bf6851d8dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dagef=C3=B6rde?= Date: Fri, 18 Aug 2017 10:57:04 +0200 Subject: [PATCH 1/2] MDL-59869 oauth2: Send expiry notification on exceptions, too --- lib/classes/oauth2/refresh_system_tokens_task.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/classes/oauth2/refresh_system_tokens_task.php b/lib/classes/oauth2/refresh_system_tokens_task.php index 22cb45ce610..063a26e9b25 100644 --- a/lib/classes/oauth2/refresh_system_tokens_task.php +++ b/lib/classes/oauth2/refresh_system_tokens_task.php @@ -25,6 +25,7 @@ namespace core\oauth2; use \core\task\scheduled_task; +use moodle_exception; defined('MOODLE_INTERNAL') || die(); @@ -84,7 +85,14 @@ class refresh_system_tokens_task extends scheduled_task { $issuers = \core\oauth2\api::get_all_issuers(); foreach ($issuers as $issuer) { if ($issuer->is_system_account_connected()) { - if (!\core\oauth2\api::get_system_oauth_client($issuer)) { + try { + // Try to get an authenticated client; renew token if necessary. + // Returns false or throws a moodle_exception on error. + $success = \core\oauth2\api::get_system_oauth_client($issuer); + } catch (moodle_exception $e) { + $success = false; + } + if ($success === false) { $this->notify_admins($issuer); } } From 8aa17e13476d4fa9bb00915e64c11cab23146bfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dagef=C3=B6rde?= Date: Fri, 18 Aug 2017 10:57:36 +0200 Subject: [PATCH 2/2] MDL-59869 oauth2: Fix notification method --- lib/classes/oauth2/refresh_system_tokens_task.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/classes/oauth2/refresh_system_tokens_task.php b/lib/classes/oauth2/refresh_system_tokens_task.php index 063a26e9b25..66bb0d70ca9 100644 --- a/lib/classes/oauth2/refresh_system_tokens_task.php +++ b/lib/classes/oauth2/refresh_system_tokens_task.php @@ -25,12 +25,13 @@ namespace core\oauth2; use \core\task\scheduled_task; +use core_user; use moodle_exception; defined('MOODLE_INTERNAL') || die(); /** - * Simple task to delete old messaging records. + * Task to refresh system tokens regularly. Admins are notified in case an authorisation expires. * @package core * @copyright 2017 Damyon Wiese * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later @@ -51,6 +52,7 @@ class refresh_system_tokens_task extends scheduled_task { * @param \core\oauth2\issuer $issuer */ protected function notify_admins(\core\oauth2\issuer $issuer) { + global $CFG; $admins = get_admins(); if (empty($admins)) { @@ -63,8 +65,8 @@ class refresh_system_tokens_task extends scheduled_task { $message = new \core\message\message(); $message->courseid = SITEID; $message->component = 'moodle'; - $message->name = 'oauthrefreshtokenexpired'; - $message->userfrom = core\user::get_noreply_user(); + $message->name = 'errors'; + $message->userfrom = core_user::get_noreply_user(); $message->userto = $admin; $message->subject = $short; $message->fullmessage = $long;