danjme/bridgevb

Laravel 4 和 vBulletin 4 集成认证服务。

1.1.1 2013-06-04 08:36 UTC

This package is not auto-updated.

Last update: 2024-09-28 13:35:37 UTC


README

这是一个 Laravel Composer 包,提供了一种方法来验证对 vBulletin 4.x 数据库的访问,以便在没有要求用户创建新账户的情况下,构建与 vBulletin 论坛并存的 Laravel 4 网站。

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

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

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

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

为了使用此包,将以下行添加到 app/config/app.php 文件中包含的 providers 数组

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

为了使用外观,将以下内容添加到 app/config/app.php 文件中的 aliases 数组

'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() 函数返回一个表示从配置文件中指定的 vBulletin 用户表中检索的用户数据的 stdClass 对象。

$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) - 修复了会话创建错误