2016-08-19 28 views
3

私の質問は、CometChatとlaravel 5.1の統合に関するものです。CometChatとlaravelの統合5.1

私はCometchatのintegration.phpファイル内でLaravelにアクセスしようとしています。セッションクラスにアクセスできるようにしたいので、データベースからセッション情報にアクセスできます(デフォルトでは、Cometchatはファイルセッションを使用します)。 私はLaravelにファイルセッションを使用するように切り替えました。

Laravelからセッションにアクセスするには、どうすればintegration.phpファイル内でアクセスできますか?

答えて

1

私はそれを取り組んだと思います。次のコードは、私が既存のLaravelアプリケーションにアクセスできるようにして、SessionとSentinelにアクセスすることができます。

また、vendor/autoload.phpを指すインクルードを追加しました。これにより、QueryBuilderや他のシステムにアクセスできるようになりました。私が持っているintegration.phpの上部に

// integration.php includes the laravel files to give access, it just 
// didn't use it fully 

$app->make('Illuminate\Contracts\Http\Kernel')->handle(Illuminate\Http\Request::capture()); 

$id = $app['encrypter']->decrypt($_COOKIE[$app['config']['session.cookie']]); 
$app['session']->driver()->setId($id); 
$app['session']->driver()->start(); 

これは、現在実行中のLaravelを返し、私はその後、追加ベンダー/自動ロードでけれども

$app['session']->get('dataname')ような何かを行うことができています。私は今 DB::tableまたは Sentinel::getUser()などにもアクセスできます

0

include_once(dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'bootstrap'.DIRECTORY_SEPARATOR.'app.php');行の後に次の行を追加してください。

include_once(dirname(dirname(dirname(__FILE__))).DIRECTORY_SEPARATOR.'app'.DIRECTORY_SEPARATOR.'Http'.DIRECTORY_SEPARATOR.'Controllers'.DIRECTORY_SEPARATOR.'Auth'.DIRECTORY_SEPARATOR.'app.php'); 

integration.phpファイルに次のようにgetUserID()関数を交換するか、私はそれを行うこともできますが、あなたがhttp://my.cometchat.com

function getUserID() { 
    $userid = 0; 
    if (!empty($_SESSION['basedata']) && $_SESSION['basedata'] != 'null') { 
     $_REQUEST['basedata'] = $_SESSION['basedata']; 
    } 

    if (!empty($_REQUEST['basedata'])) { 
     if (function_exists('mcrypt_encrypt') && defined('ENCRYPT_USERID') && ENCRYPT_USERID == '1') { 
      $key = ""; 
      if(defined('KEY_A') && defined('KEY_B') && defined('KEY_C')){ 
       $key = KEY_A.KEY_B.KEY_C; 
      } 
      $uid = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode(rawurldecode($_REQUEST['basedata'])), MCRYPT_MODE_CBC, md5(md5($key))), "\0"); 
      if (intval($uid) > 0) { 
       $userid = $uid; 
      } 
     } else { 
      $userid = $_REQUEST['basedata']; 
     } 
    } 
    if (!empty($_COOKIE['laravel_session'])) {  
     $app = app(); 
     $kernel = $app->make('Illuminate\Contracts\Http\Kernel'); 
     $response = $kernel->handle(
      $request = Illuminate\Http\Request::capture() 
      ); 
     $id = $app['encrypter']->decrypt($_COOKIE[$app['config']['session.cookie']]); 
     $app['session']->driver()->setId($id); 
     $app['session']->driver()->start(); 
     if($app['auth']->user()!= NULL){ 
      $userid = $app['auth']->user()->id; 
     } 
    } 
    $userid = intval($userid); 
    return $userid; 
} 
+0

からLaravel 5用CometChatパッケージをダウンロードすることができますが、余分なを追加することになりましたが含まセッションに直接アクセスすることができます。また、現在使用されているユーザー認証パッケージであるSentinelがさらに優れています。だから、大きな関数の代わりに、それはちょうど一つの行になります: '' return Sentinel :: getUser() - > id; '' ' – zetetic