web service MDL-12886 implement authentication token systemprototype

This commit is contained in:
jerome
2009-01-23 05:31:02 +00:00
parent b7a9dc5193
commit 338bf5a741
2 changed files with 40 additions and 23 deletions
+7 -7
View File
@@ -86,15 +86,15 @@ final class user_external extends moodle_external {
* @return boolean true if success
*/
static function tmp_delete_user($params) {
global $DB;
global $DB,$USER;
$user = $DB->get_record('user', array('username'=>$params['username'], 'mnethostid'=>$params['mnethostid']));
/// PLEASE UNCOMMENT HERE ONCE AUTHENTICATION IS IMPLEMENTED - $USER/context need to be set here
// if (has_capability('moodle/user:delete', get_context_instance(CONTEXT_SYSTEM))) {
if (has_capability('moodle/user:delete', get_context_instance(CONTEXT_SYSTEM))) {
return delete_user($user); //this function is in moodlelib.php
// }
// else {
// throw new moodle_exception('couldnotdeleteuser');
// }
}
else {
throw new moodle_exception('couldnotdeleteuser');
}
}
+33 -16
View File
@@ -14,7 +14,8 @@
* @return string xml object
*/
function call_moodle_function ($rest_arguments) {
global $CFG;
global $CFG, $USER;
///REST params conversion
$functionname = substr($rest_arguments,strrpos($rest_arguments,"/")+1); //retrieve the function name (it's located after the last '/') in $rest_arguments
//$rest_argument
@@ -24,18 +25,6 @@ function call_moodle_function ($rest_arguments) {
$classname = substr($classname,1, strlen($classname) - 1); //remove first _ (e.g. _mod_forum => mod_forum)
$classname .= 'external';
require_once($CFG->dirroot.$apipath.'external.php');
$wsapi = new $classname();
$description = $wsapi->get_function_webservice_description($functionname); //retrieve the web service description for this function
///This following line is only REST protocol
$params = retrieve_params ($description); //retrieve the REST params
///Generic part to any protocols
if ($params === false) {
//return an error message, the REST params doesn't match with the web service description
}
/// Authentication process
/// TODO: this use a fake token => need to implement token generation
$token = optional_param('token',null,PARAM_ALPHANUM);
@@ -50,11 +39,30 @@ function call_moodle_function ($rest_arguments) {
}
}
} else {
if (!mock_check_token($token)) {
$user = mock_check_token($token);
if (empty($user)) {
throw new moodle_exception('wrongidentification');
}
else {
$USER = $user;
}
}
/// load the external class
require_once($CFG->dirroot.$apipath.'external.php');
$wsapi = new $classname();
$description = $wsapi->get_function_webservice_description($functionname); //retrieve the web service description for this function
/// This following line is only REST protocol
$params = retrieve_params ($description); //retrieve the REST params
/// Generic part to any protocols
if ($params === false) {
//return an error message, the REST params doesn't match with the web service description
}
$res = call_user_func_array ( $classname.'::'.$functionname, array($params));
///Transform result into xml in order to send the REST response
@@ -64,14 +72,23 @@ function call_moodle_function ($rest_arguments) {
}
/**
* TODO: remove this funcion once token implementation is done
* TODO: remove/rewrite this funcion
* Mock function waiting for token system implementation
* @param <type> $token
* @return <type>
*/
function mock_check_token($token) {
//fake test
if ($token == 465465465468468464) {
return true;
///retrieve the user
global $DB;
$user = $DB->get_record('user', array('username'=>'admin', 'mnethostid'=>1));
if (empty($user)) {
return false;
}
return $user;
} else {
return false;
}