eld/bridgevb

此包已被弃用且不再维护。未建议替代包。

Laravel 4和vBulletin 4认证服务桥接器。

1.1.1 2013-06-04 08:36 UTC

This package is not auto-updated.

Last update: 2020-06-26 17:33:31 UTC


README

这是一个Laravel Composer包,提供了一种对vBulletin 4.x数据库进行认证的方法,允许在不要求用户创建新账户的情况下,在vBulletin论坛旁边构建Laravel 4网站。

此包基于pperon/vbauth包和vb_auth包。

在composer.json中将eld/bridgevb添加为依赖项

{
	"require": {
		"eld/bridgevb": "1.*"
	}
}

运行composer update以更新您的包或如果尚未运行,运行composer install

要使用此包,请将以下行添加到app/config/app.php文件中包含的提供者数组

'providers' => array(
				...
				...
				'Eld\Bridgevb\BridgevbServiceProvider',
),

为了使用外观,请在app/config/app.php中的别名数组中添加以下内容

'aliases' => array(
				...
				...
				'Bridgevb'		  => 'Eld\Bridgevb\Facades\BridgeVb',
),

配置文件

默认配置文件位于vender/eld/bridgevb/src/config/config.php,但您应该使用app/config/packages/eld/bridgevb/config.php文件覆盖它。

配置文件看起来像

array(
	'connection' => 'mysql',
	'cookie_hash' => 'AdflkjEr90234asdlkj1349SDFkl',
	'cookie_prefix' => 'bb_',
	'db_prefix' => 'vb_',
	'forum_path' => 'http://example.com/',
	'user_groups' => array(
		'Admin' => array(6),
		'Moderator' => array(7),
		'Super Moderator' => array(5),
		'User' => array(2),
		'Banned' => array(8),
		'Guest' => array(3),
	),
	'user_columns' => array(
		'userid',
		'username',
		'password',
		'usergroupid',
		'membergroupids',
		'email',
		'salt'
	),
);

您需要替换现有配置文件或app/config/packages/eld/bridgevb/config.php文件中的以下字段,以适应您的设置:connectioncookie_hashcookie_prefixdb_prefixdb_prefixforum_path。在user_groups部分添加您的论坛用户组,并使用user_columns选项自定义您要获取的用户信息。

示例使用

如果您要在用户加载的每个页面上进行用户认证,则可以在app/filters.php中看到这样的过滤器。

Route::filter('vbauth', function()
{
	if (!Bridgevb::isLoggedIn()) return Redirect::to('login');
});

如果您想从vBulletin站点外部登录用户,以下是如何操作的示例片段

Route::post('/login', function()
{
	$creds = array(
		'username' => Input::get('username'),
		'password' => Input::get('password'),
		'remember_me' => Input::get('remember_me', false),
	);

	if (Bridgevb::attempt($creds))
		return Redirect::to('/');
	else
		return Redirect::to('/login');
});

以下是在库中包含的函数

用法示例包含在每个方法的描述中

is()

is()函数接受一个字符串参数并返回用户是否属于该用户组。

Route::get('/isgroup', function()
{
	return (Bridgevb::is('Banned') ? 'You are banned' : 'You are not banned');
});

attempt()

attempt()方法接受一个包含凭证的数组,如果认证尝试成功,则返回true,如果凭证不正确,则返回false。

Route::post('/login', function()
{
	$creds = array(
		'username' => Input::get('username'),
		'password' => Input::get('password'),
		'remember_me' => Input::get('remember_me', false),
	);

	if (Bridgevb::attempt($creds))
		return Redirect::to('/');
	else
		return Redirect::to('/login');
});

isLoggedIn()

isLoggedIn()函数检查当前用户是否已认证,如果用户当前已认证,则返回非零值。

Route::get('/login', function()
{
	if(Bridgevb::isLoggedIn())
		return Redirect::to('/');
	return View::make('login');
});

getUserInfo()

getUserInfo() 函数返回一个 stdClass 对象,表示从配置文件中指定的 vBulletin 用户表中检索到的用户数据。

$user = Bridgevb::getUserInfo();
echo 'Hello, ' . $user->username;

get()

get 方法接受一个字符串并返回传递给用户的特定信息。

$username = Bridgevb::get('username');
echo 'Hello, ' . $username;

getLogoutHash()

此函数返回登录用户的登出哈希值,允许您使用正确的登出哈希值链接到 vBulletin 的登出功能。

return '<a href="http://www.example.com/login.php?do=logout&logouthash=' . Bridgevb::getLogoutHash() . '">Logout</a>';

logout()

手动登出用户,而不是通过 vBulletin 的登出功能进行路由。

Bridgevb::logout();

变更日志

2013 年 6 月 1 日 (v1.0) - 初次发布
2013 年 6 月 2 日 (v1.0.1) - 修改代码以符合 PSR-2 规范
2013 年 6 月 3 日 (v1.1) - 修复了在会话进行认证时导致数据库添加多行的问题的补丁
2013 年 6 月 3 日 (v1.1.1) - 修复了会话创建的 bugs