Exemplo n.º 1
0
}
// Check if the plugin is properly configured.
$typeoflogin = get_config('tool_mobile', 'typeoflogin');
if ($typeoflogin != tool_mobile\api::LOGIN_VIA_BROWSER and $typeoflogin != tool_mobile\api::LOGIN_VIA_EMBEDDED_BROWSER) {
    throw new moodle_exception('pluginnotenabledorconfigured', 'tool_mobile');
}
// Check if the service exists and is enabled.
$service = $DB->get_record('external_services', array('shortname' => $serviceshortname, 'enabled' => 1));
if (empty($service)) {
    throw new moodle_exception('servicenotavailable', 'webservice');
}
require_login(0, false);
// Require an active user: not guest, not suspended.
core_user::require_active_user($USER);
// Get an existing token or create a new one.
$token = external_generate_token_for_current_user($service);
// Log token access.
$DB->set_field('external_tokens', 'lastaccess', time(), array('id' => $token->id));
$params = array('objectid' => $token->id);
$event = \core\event\webservice_token_sent::create($params);
$event->add_record_snapshot('external_tokens', $token);
$event->trigger();
// Passport is generated in the mobile app, so the app opening can be validated using that variable.
// Passports are valid only one time, it's deleted in the app once used.
$siteid = md5($CFG->wwwroot . $passport);
$apptoken = base64_encode($siteid . ':::' . $token->token);
// Redirect using the custom URL scheme checking first if a URL scheme is forced in the site settings.
$forcedurlscheme = get_config('tool_mobile', 'forcedurlscheme');
if (!empty($forcedurlscheme)) {
    $urlscheme = $forcedurlscheme;
}
 /**
  * Test get_autologin_key locked.
  */
 public function test_get_autologin_key_missing_locked()
 {
     global $CFG, $DB, $USER;
     $this->resetAfterTest(true);
     $user = $this->getDataGenerator()->create_user();
     $this->setUser($user);
     $CFG->enablewebservices = 1;
     $CFG->enablemobilewebservice = 1;
     $CFG->httpswwwroot = str_replace('http:', 'https:', $CFG->httpswwwroot);
     $service = $DB->get_record('external_services', array('shortname' => MOODLE_OFFICIAL_MOBILE_SERVICE));
     $token = external_generate_token_for_current_user($service);
     $_GET['wstoken'] = $token->token;
     // Mock parameters.
     $result = external::get_autologin_key($token->privatetoken);
     $result = external_api::clean_returnvalue(external::get_autologin_key_returns(), $result);
     // Mock last time request.
     $mocktime = time() - 7 * MINSECS;
     set_user_preference('tool_mobile_autologin_request_last', $mocktime, $USER);
     $result = external::get_autologin_key($token->privatetoken);
     $result = external_api::clean_returnvalue(external::get_autologin_key_returns(), $result);
     // We just requested one token, we must wait.
     $this->expectException('moodle_exception');
     $this->expectExceptionMessage(get_string('autologinkeygenerationlockout', 'tool_mobile'));
     $result = external::get_autologin_key($token->privatetoken);
 }