vBulletin 4 bridge for Laravel 4
This package is based off of the pperon/vbauth package and the vb_auth package for CodeIgnitor., (*1)
Add eld/bridgevb as a requirement in composer.json:, (*2)
{
"require": {
"eld/bridgevb": "1.*"
}
}
Run composer update to update your packages or composer install if you haven't already run the command, (*3)
To use the package, add this line to your providers array contained in the app/config/app.php file:, (*4)
'providers' => array(
...
...
'Eld\Bridgevb\BridgevbServiceProvider',
),
In order to use the facade, add the following to your aliases array in app/config/app.php:, (*5)
'aliases' => array(
...
...
'Bridgevb' => 'Eld\Bridgevb\Facades\BridgeVb',
),
Configuration File:
The default configuration file is found in vender/eld/bridgevb/src/config/config.php but you should overwrite it with a app/config/packages/eld/bridgevb/config.php file., (*6)
The configuration file looks like:, (*7)
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'
),
);
You need to replace the following fields in the existing config file or the config file in app/config/packages/eld/bridgevb/config.php file to suit your setup: connection, cookie_hash, cookie_prefix, db_prefix, db_prefix, forum_path, and add your forum's user groups in the user_groups portion and customize which user info you'd like to fetch with the user_columns option., (*8)
Exampe Usage:
This is what a filter could look like in app/filters.php if you were to authenticate users on every page they loaded., (*9)
Route::filter('vbauth', function()
{
if (!Bridgevb::isLoggedIn()) return Redirect::to('login');
});
If you wanted to log in users externally from the vBulletin site, here's an snippet of how you'd do it:, (*10)
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');
});
The following are functions included in the library:
Examples of usage are included in each description of the method, (*11)
is()
The is() function takes in a string parameter an returns whether the user is a member of that user group., (*12)
Route::get('/isgroup', function()
{
return (Bridgevb::is('Banned') ? 'You are banned' : 'You are not banned');
});
attempt()
The attempt method takes in an array of credentials and returns true if the authentication attempt was successful and returns false if the credentials were incorrect., (*13)
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()
The isLoggedIn() function checks to authenticate the current user and retursn a non-zero value if the user is currently authenticated., (*14)
Route::get('/login', function()
{
if(Bridgevb::isLoggedIn())
return Redirect::to('/');
return View::make('login');
});
getUserInfo()
The getUserInfo() function returns a stdClass object representing the user data retrieved from the vBulletin user table as specified in the configuration file., (*15)
$user = Bridgevb::getUserInfo();
echo 'Hello, ' . $user->username;
get()
The get method takes in a string and returns the particular piece of information about the user that's passed in., (*16)
$username = Bridgevb::get('username');
echo 'Hello, ' . $username;
getLogoutHash()
This function returns the logout hash for the user logged in that allows for you to link to vBulletin's logout function with teh proper logout hash., (*17)
return '<a href="http://www.example.com/login.php?do=logout&logouthash=' . Bridgevb::getLogoutHash() . '">Logout</a>';
logout()
Logs the user out manually instead of routing through vBulletin's logout function., (*18)
Bridgevb::logout();
Changelog
6/1/2013 (v1.0) - Initial Release
6/2/2013 (v1.0.1) - Revised code to be PSR-2 compliant
6/3/2013 (v1.1) - Patched bug causing multiple rows to be added to the database when the session was being authenticated
6/3/2013 (v1.1.1) - Fixed session creation bugs, (*19)