From ecf15a63b4fd90f1a595a14d7a3e6abfcb3b1d38 Mon Sep 17 00:00:00 2001 From: Mihail Geshoski <mihail@moodle.com> Date: Thu, 2 Jul 2020 16:37:05 +0800 Subject: [PATCH] MDL-60827 oauth2: Consider requireconfirmation setting on login --- auth/oauth2/classes/auth.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/auth/oauth2/classes/auth.php b/auth/oauth2/classes/auth.php index 1d1ff6fc14c..cf6fcfdebcd 100644 --- a/auth/oauth2/classes/auth.php +++ b/auth/oauth2/classes/auth.php @@ -455,8 +455,9 @@ class auth extends \auth_plugin_base { } } + $issuer = $client->get_issuer(); // First we try and find a defined mapping. - $linkedlogin = api::match_username_to_user($userinfo['username'], $client->get_issuer()); + $linkedlogin = api::match_username_to_user($userinfo['username'], $issuer); if (!empty($linkedlogin) && empty($linkedlogin->get('confirmtoken'))) { $mappeduser = get_complete_user_data('id', $linkedlogin->get('userid')); @@ -474,7 +475,7 @@ class auth extends \auth_plugin_base { $SESSION->loginerrormsg = get_string('invalidlogin'); $client->log_out(); redirect(new moodle_url('/login/index.php')); - } else if ($mappeduser && $mappeduser->confirmed) { + } else if ($mappeduser && ($mappeduser->confirmed || !$issuer->get('requireconfirmation'))) { // Update user fields. $userinfo = $this->update_user($userinfo, $mappeduser); $userwasmapped = true; @@ -503,7 +504,7 @@ class auth extends \auth_plugin_base { redirect(new moodle_url('/login/index.php')); } - $issuer = $client->get_issuer(); + if (!$issuer->is_valid_login_domain($oauthemail)) { // Trigger login failed event. $failurereason = AUTH_LOGIN_UNAUTHORISED;