|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00002 00015 require_once dirname(dirname(dirname(__FILE__))) . '/config.php'; 00016 require_once $CFG->dirroot . '/mnet/xmlrpc/client.php'; 00017 00018 // grab the GET params 00019 $token = required_param('token', PARAM_BASE64); 00020 $remotewwwroot = required_param('idp', PARAM_URL); 00021 $wantsurl = required_param('wantsurl', PARAM_LOCALURL); 00022 $wantsremoteurl = optional_param('remoteurl', false, PARAM_BOOL); 00023 00024 $url = new moodle_url('/auth/mnet/jump.php', array('token'=>$token, 'idp'=>$remotewwwroot, 'wantsurl'=>$wantsurl)); 00025 if ($wantsremoteurl !== false) $url->param('remoteurl', $wantsremoteurl); 00026 $PAGE->set_url($url); 00027 00028 $site = get_site(); 00029 00030 if (!is_enabled_auth('mnet')) { 00031 print_error('mnetdisable'); 00032 } 00033 00034 // confirm the MNET session 00035 $mnetauth = get_auth_plugin('mnet'); 00036 $remotepeer = new mnet_peer(); 00037 $remotepeer->set_wwwroot($remotewwwroot); 00038 // this creates the local user account if necessary, or updates it if it already exists 00039 $localuser = $mnetauth->confirm_mnet_session($token, $remotepeer); 00040 00041 // log in 00042 $user = get_complete_user_data('id', $localuser->id, $localuser->mnethostid); 00043 complete_user_login($user); 00044 // now that we've logged in, set up the mnet session properly 00045 $mnetauth->update_mnet_session($user, $token, $remotepeer); 00046 00047 if (!empty($localuser->mnet_foreign_host_array)) { 00048 $USER->mnet_foreign_host_array = $localuser->mnet_foreign_host_array; 00049 } 00050 00051 // redirect 00052 if ($wantsremoteurl) { 00053 redirect($remotewwwroot . $wantsurl); 00054 } 00055 redirect($CFG->wwwroot . $wantsurl); 00056 00057