MDL-36988 cleanup role switching
This patch uses local URLs in parameters because it is more compatible with various security hacks. Session key is not added automatically to return url for safety reasons - we do not want to execute some random action again. POST pages are now returned to course page too.
This commit is contained in:
@@ -3595,10 +3595,8 @@ class settings_navigation extends navigation_node {
|
||||
if ((count($roles)==1 && array_key_exists(0, $roles))|| $assumedrole!==false) {
|
||||
$switchroles->force_open();
|
||||
}
|
||||
$returnurl = $this->page->url;
|
||||
$returnurl->param('sesskey', sesskey());
|
||||
foreach ($roles as $key => $name) {
|
||||
$url = new moodle_url('/course/switchrole.php', array('id'=>$course->id,'sesskey'=>sesskey(), 'switchrole'=>$key, 'returnurl'=>$returnurl->out(false)));
|
||||
$url = new moodle_url('/course/switchrole.php', array('id'=>$course->id, 'sesskey'=>sesskey(), 'switchrole'=>$key, 'returnurl'=>$this->page->url->out_as_local_url(false)));
|
||||
$switchroles->add($name, $url, self::TYPE_SETTING, null, $key, new pix_icon('i/switchrole', ''));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user