diff options
Diffstat (limited to 'engine/lib/web_services.php')
| -rw-r--r-- | engine/lib/web_services.php | 27 | 
1 files changed, 19 insertions, 8 deletions
diff --git a/engine/lib/web_services.php b/engine/lib/web_services.php index c8e4a13cc..51cad6f39 100644 --- a/engine/lib/web_services.php +++ b/engine/lib/web_services.php @@ -178,7 +178,7 @@ function authenticate_method($method) {  	// check if user authentication is required  	if ($API_METHODS[$method]["require_user_auth"] == true) {  		if ($user_auth_result == false) { -			throw new APIException($user_pam->getFailureMessage()); +			throw new APIException($user_pam->getFailureMessage(), ErrorResult::$RESULT_FAIL_AUTHTOKEN);  		}  	} @@ -1166,6 +1166,17 @@ function list_all_apis() {   * @access private   */  function auth_gettoken($username, $password) { +	// check if username is an email address
 +	if (is_email_address($username)) {
 +		$users = get_user_by_email($username);
 +			
 +		// check if we have a unique user
 +		if (is_array($users) && (count($users) == 1)) {
 +			$username = $users[0]->username;
 +		}
 +	}
 +	
 +	// validate username and password  	if (true === elgg_authenticate($username, $password)) {  		$token = create_user_token($username);  		if ($token) { @@ -1195,7 +1206,7 @@ $ERRORS = array();   *   * @return void   * @access private - *  + *   * @throws Exception   */  function _php_api_error_handler($errno, $errmsg, $filename, $linenum, $vars) { @@ -1267,14 +1278,14 @@ function service_handler($handler, $request) {  	$request = explode('/', $request);  	// after the handler, the first identifier is response format -	// ex) http://example.org/services/api/rest/xml/?method=test -	$reponse_format = array_shift($request); +	// ex) http://example.org/services/api/rest/json/?method=test +	$response_format = array_shift($request);  	// Which view - xml, json, ... -	if ($reponse_format) { -		elgg_set_viewtype($reponse_format); +	if ($response_format && elgg_is_valid_view_type($response_format)) { +		elgg_set_viewtype($response_format);  	} else { -		// default to xml -		elgg_set_viewtype("xml"); +		// default to json +		elgg_set_viewtype("json");  	}  	if (!isset($CONFIG->servicehandler) || empty($handler)) {  | 
