diff --git a/src/rm/RequestManagerUserAuthenticate.cc b/src/rm/RequestManagerUserAuthenticate.cc index b5269be841..ea52d34387 100644 --- a/src/rm/RequestManagerUserAuthenticate.cc +++ b/src/rm/RequestManagerUserAuthenticate.cc @@ -26,8 +26,12 @@ void RequestManager::UserAuthenticate::execute( xmlrpc_c::paramList const& paramList, xmlrpc_c::value * const retval) { - string session; - int rc; + string session; + int uid; + + ostringstream oss; + const string method_name = "UserAuthenticate"; + /* -- RPC specific vars -- */ vector arrayData; @@ -39,10 +43,16 @@ void RequestManager::UserAuthenticate::execute( session = xmlrpc_c::value_string(paramList.getString(0)); // Try to authenticate the user - rc = UserAuthenticate::upool->authenticate(session); + uid = UserAuthenticate::upool->authenticate(session); + + if( uid == -1 ) + { + goto error_common; + } //Result - arrayData.push_back(xmlrpc_c::value_boolean( rc == 0 )); + arrayData.push_back(xmlrpc_c::value_boolean( true )); + arrayData.push_back(xmlrpc_c::value_int(uid)); arrayresult = new xmlrpc_c::value_array(arrayData); *retval = *arrayresult; @@ -50,6 +60,19 @@ void RequestManager::UserAuthenticate::execute( delete arrayresult; return; + +error_common: + oss.str(authenticate_error(method_name)); + + arrayData.push_back(xmlrpc_c::value_boolean(false)); // FAILURE + arrayData.push_back(xmlrpc_c::value_string( authenticate_error(method_name) ); + + NebulaLog::log("ReM",Log::ERROR,oss); + + xmlrpc_c::value_array arrayresult_error(arrayData); + + *retval = arrayresult_error; + return; } /* -------------------------------------------------------------------------- */