MDL-80422 auth_oauth2: honour site/user preferred homepage post-login.

Co-authored-by: Markus Kwaśnicki <[email protected]>
This commit is contained in:
Paul Holden
2025-10-03 14:18:33 +01:00
co-authored by Markus Kwaśnicki
parent a828ba12c1
commit 71f65c7677
2 changed files with 12 additions and 6 deletions
+11 -5
View File
@@ -34,9 +34,11 @@ use stdClass;
use core\oauth2\issuer;
use core\oauth2\client;
global $CFG;
require_once($CFG->libdir.'/authlib.php');
require_once($CFG->dirroot.'/user/lib.php');
require_once($CFG->dirroot.'/user/profile/lib.php');
require_once($CFG->dirroot.'/login/lib.php');
/**
* Plugin for oauth2 authentication.
@@ -175,12 +177,12 @@ class auth extends \auth_plugin_base {
public function loginpage_idp_list($wantsurl) {
$providers = \core\oauth2\api::get_all_issuers(true);
$result = [];
if (empty($wantsurl)) {
$wantsurl = '/';
}
foreach ($providers as $idp) {
if ($idp->is_available_for_login()) {
$params = ['id' => $idp->get('id'), 'wantsurl' => $wantsurl, 'sesskey' => sesskey()];
$params = ['id' => $idp->get('id'), 'sesskey' => sesskey()];
if (!empty($wantsurl)) {
$params['wantsurl'] = $wantsurl;
}
$url = new moodle_url('/auth/oauth2/login.php', $params);
$icon = $idp->get('image');
$result[] = ['url' => $url, 'iconurl' => $icon, 'name' => $idp->get_display_name()];
@@ -620,7 +622,11 @@ class auth extends \auth_plugin_base {
complete_user_login($user, $this->get_extrauserinfo());
$this->update_picture($user);
redirect($redirecturl);
if (empty($redirecturl)) {
$redirecturl = core_login_get_return_url();
}
redirect(new moodle_url($redirecturl));
}
/**
+1 -1
View File
@@ -25,7 +25,7 @@
require_once('../../config.php');
$issuerid = required_param('id', PARAM_INT);
$wantsurl = new moodle_url(optional_param('wantsurl', '', PARAM_URL));
$wantsurl = optional_param('wantsurl', '', PARAM_URL);
$PAGE->set_context(context_system::instance());
$PAGE->set_url(new moodle_url('/auth/oauth2/login.php', ['id' => $issuerid]));