You are here

function acquia_connector_test_credentials in Acquia Connector 7.2

Same name and namespace in other branches
  1. 7.3 acquia_agent/tests/acquia_connector_test.module \acquia_connector_test_credentials()
1 call to acquia_connector_test_credentials()
acquia_connector_test_xmlrpc_server_emulator in acquia_agent/tests/acquia_connector_test.module
1 string reference to 'acquia_connector_test_credentials'
acquia_connector_test_xmlrpc in acquia_agent/tests/acquia_connector_test.module

File

acquia_agent/tests/acquia_connector_test.module, line 191
Test endpoint for Acquia Connector XML-RPC calls.

Code

function acquia_connector_test_credentials($data) {
  $fields = array(
    'time' => 'is_numeric',
    'nonce' => 'is_string',
    'hash' => 'is_string',
  );
  $result = acquia_connector_test_basic_authenticator($fields, $data);
  if (!empty($result->is_error)) {
    return $result;
  }
  if (!empty($data['body']['email'])) {
    $account = user_load_by_mail($data['body']['email']);
    if (empty($account) || $account->uid == 0) {
      return xmlrpc_error(ACQSUBSCRIPTION_VALIDATION_ERROR, t('Account not found'));
    }
  }
  else {
    return xmlrpc_error(ACQSUBSCRIPTION_VALIDATION_ERROR, t('Invalid arguments'));
  }
  $hash = _acquia_agent_hmac($account->pass, $data['authenticator']['time'], $data['authenticator']['nonce'], $data['body']);
  if ($hash === $data['authenticator']['hash']) {
    $result = array();
    $result['is_error'] = FALSE;
    $result['body']['subscription'][] = array(
      'identifier' => ACQTEST_ID,
      'key' => ACQTEST_KEY,
      'name' => ACQTEST_ID,
    );
    return $result;
  }
  else {
    return xmlrpc_error(ACQSUBSCRIPTION_VALIDATION_ERROR, t('Incorrect password.'));
  }
}