0

管理者ユーザーでコードを実行すると、モジュールは必要なものを返します。ただし、通常のユーザーで実行すると、403エラーが発生します。モジュールはAJAX呼び出しからデータを返します。'アクセスコールバック'=>'user_access');を追加しようとしました。exoticlang_chat_logger_menu()関数への行。私はあなたが持っているかもしれないどんなポインタでもありがたいです。

助けてくれてありがとう

AJAX呼び出し:

jQuery.ajax({
    type: 'POST',
    url: '/chatlog',
    success: exoticlangAjaxCompleted,
    data:'messageLog=' + privateMessageLogJson,
    dataType: 'json'
});

モジュールコード:

function exoticlang_chat_logger_init(){
drupal_add_js('misc/jquery.form.js');
drupal_add_library('system', 'drupal.ajax');
}

function exoticlang_chat_logger_permission() {
  return array(
    'Save chat data' => array(
      'title' => t('Save ExoticLang Chat Data'),
      'description' => t('Send private message on chat close')
    ),
  );
}

/**
 * Implementation of hook_menu().
 */

function exoticlang_chat_logger_menu() {
    $items = array();
    $items['chatlog'] = array(
    'type'             => MENU_CALLBACK,
    'page callback'    => 'exoticlang_chat_log_ajax',
    'access arguments' => 'Save chat data');
    //'access callback' => 'user_access');
    return $items;
}

function exoticlang_chat_logger_ajax(){
    $messageLog=stripslashes($_POST['messageLog']);

    $chatLog= 'Drupal has processed this. Message log is: '.$messageLog;
    $chatLog=str_replace('":"{[{','":[{',$chatLog);
    $chatLog=str_replace(',,',',',$chatLog);
    $chatLog=str_replace('"}"','"}',$chatLog);
    $chatLog=str_replace('"}]}"','"}]',$chatLog);

     echo json_encode(array('messageLog' => $chatLog));
//    echo $chatLog;

    echo print_r(privatemsg_new_thread(array(user_load(1)), 'The subject', 'The body text'));
    drupal_exit();
}
4

1 に答える 1

2

access arguments配列である必要があります:

$items['chatlog'] = array(
  'type'             => MENU_CALLBACK,
  'page callback'    => 'exoticlang_chat_log_ajax',
  'access arguments' => array('Save chat data')
);
于 2012-08-29T21:37:20.513 に答える