我的问题涉及将 CometChat 与 laravel 5.1 集成。
我正在尝试在 Cometchat 的 integration.php 文件中授予对 Laravel 的访问权限。我想授予对 Session 类的访问权限,以便我可以从数据库中访问会话信息(默认情况下,Cometchat 使用文件会话)。目前我已将 Laravel 切换为使用文件会话。
那么如何从 Laravel 访问会话,以便在 integration.php 文件中访问它?
我的问题涉及将 CometChat 与 laravel 5.1 集成。
我正在尝试在 Cometchat 的 integration.php 文件中授予对 Laravel 的访问权限。我想授予对 Session 类的访问权限,以便我可以从数据库中访问会话信息(默认情况下,Cometchat 使用文件会话)。目前我已将 Laravel 切换为使用文件会话。
那么如何从 Laravel 访问会话,以便在 integration.php 文件中访问它?
好的,我想我已经解决了。下面的代码让我可以访问现有的 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')
虽然添加了 vendor/autoload.php 我现在也可以访问DB::table
orSentinel::getUser()
等
请逐行添加以下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');
将 getUserID() 函数替换为 integration.php 文件中的以下函数,或者您可以从http://my.cometchat.com下载 Laravel 5 的 CometChat 包
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;
}