During installation, Backpack publishes a few files in your resources/views/vendor/backpack/base
folder. In there, you'll also find inc/sidebar_content.php
and inc/menu.php
. Change those files as you please.
In config/app.php
, Make sure the "RouteServiceProvider" is set after "BaseServiceProvider".
Add a route, so that the standard route will take the user to a controller you want:
Route::get('dashboard', 'DashboardController@index');
Inside DashboardController on index method return dashboard view.
public function index() {
$someVar = 'Some text';
return view('vendor.backpack.base.dashboard', compact('someVar'));
}
Update the dashboard view located at: resources/view/vendor/backpack/base/dashboard.blade.php
NOTE: if you don't have this folder you need to publish vendor assets
php artisan vendor:publish --provider="Backpack\Base\BaseServiceProvider"
// TODO - use explanation in github issue to write steps
In config/backpack/base.php
you'll find these configuration options:
// Set this to false if you would like to use your own AuthController and PasswordController
// (you then need to setup your auth routes manually in your routes.php file)
'setup_auth_routes' => true,
You can change both setup_auth_routes
to false
. This means Backpack\Base won't register the Auth routes any more, so you'll have to manually register them in your route file, to point to the Auth controllers you want. If you're going to use the Auth controllers that Laravel generates, these are the routes you can use:
Route::group(['middleware' => 'web', 'prefix' => config('backpack.base.route_prefix')], function () {
Route::auth();
Route::get('logout', 'Auth\LoginController@logout');
});
In config/backpack/base.php
you'll find these configuration options:
/*
|--------------------------------------------------------------------------
| Routing
|--------------------------------------------------------------------------
*/
// The prefix used in all base routes (the 'admin' in admin/dashboard)
'route_prefix' => 'admin',
// Set this to false if you would like to use your own AuthController and PasswordController
// (you then need to setup your auth routes manually in your routes.php file)
'setup_auth_routes' => true,
// Set this to false if you would like to skip adding the dashboard routes
// (you then need to overwrite the login route on your AuthController)
'setup_dashboard_routes' => true,
In order to completely customize the auth routes, you can change both setup_auth_routes
and setup_dashboard_routes
to false
. This means Backpack\Base won't register any routes any more, so you'll have to manually register them in your route file. Here's what you can use to get started:
Route::group(['middleware' => 'web', 'prefix' => config('backpack.base.route_prefix'), 'namespace' => 'Backpack\Base\app\Http\Controllers'], function () {
Route::auth();
Route::get('logout', 'Auth\LoginController@logout');
Route::get('dashboard', 'AdminController@dashboard');
Route::get('/', 'AdminController@redirect');
});
Additionally, you can place a new routes file in your app/routes/backpack/base.php
. If a file is present there, no default Backpack\Base routes will be loaded, only what's present in that file.
In config/app.php
you should have a config option that looks like this:
// Overlays - CSS files that change the look and feel of the admin panel
'overlays' => [
'vendor/backpack/overlays/backpack.bold.css',
],
If you don't (it was added in Base 0.9.9), you can create it.
This config option allows you to add CSS files that add style on top of AdminLTE, to make it look different. Our backpack.bold.css
file is included by default, which makes AdminLTE look more modern. But if you want your backend to match your front-end, you can create a CSS file anywhere inside your public
folder, and add it here.
For example, if you're using the Stack HTML template on your front-end, you can just add this overlay to make AdminLTE look very similar.
If you need separate login for user and admin, probably the fastest way would be to use:
That way, you have both AND you have most of your code already written - Backpack comes with its own Authentication controllers, Laravel too.
For this to happen, keep the setup_auth_routes
and setup_dashboard_routes
variables true
in your config/backpack/base.php
file. You'll be using the Backpack authentication, after all, for admins. Just add the Laravel authentication, like instructed in the Laravel documentation: php artisan make:auth
. You'll then have:
/login
-> using the AuthenticationController Laravel provides/admin/login
-> using the AuthenticationControllers Backpack providesYou might want your admins to be logged in as Admin X and User Z at the same time (for user impersonation, for example). If so, you will need to use different guards for those two authentications. The easiest way would be to use the default Laravel guard for the user authentication and just create a new guard for the Admin authentication. You'll notice in all Backpack views we've used backpack_auth()->user()
instead of Auth::user()
. It's for this exact purpose. If you specify a guard, all Backpack views will impose that guard.
Step 1. Follow the section above in order to have two different login screens, one for admin and one for the user.
Step 2. In your config/auth.php
:
2.1. Add a new guard:
'guards' => [
// ...
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
2.2. Add a provider:
'providers' => [
// ...
'admins' => [
'driver' => 'eloquent',
'model' => Backpack\Base\app\Models\BackpackUser::class,
],
],
2.3. Add a password reset configuration:
'passwords' => [
// ...
'admin' => [
'provider' => 'admins',
'table' => 'password_resets',
'expire' => 60,
],
],
Step 3. In your config/backpack/base.php
tell Backpack to use these new guards for the admin authentication, instead of the default:
// The guard that protects the Backpack admin panel.
// If null, the config.auth.defaults.guard value will be used.
'guard' => 'admin',
// The password reset configuration for Backpack.
// If null, the config.auth.defaults.passwords value will be used.
'passwords' => 'admin',
That's it. Backpack will now use a separate session for the admin login. You can be logged in with Admin X
and User Z
at the same time, and log out Admin X
without logging out the user too.
username
column in your users table and add it in $fillable
on your User
model. Best to do this with a migration.email
column and remove it from $fillable
on your User
model. Alternatively, just remove UNIQUE and NOT NULL from it. Best to do this with a migration.config/backpack/base.php
config options:
// Username column for authentication
// The Backpack default is the same as the Laravel default (email)
// If you need to switch to username, you also need to create that column in your db
'authentication_column' => 'username',
'authentication_column_name' => 'Username',
That's it. This will:
username
for login;username
for registration;username
in My Account, when a user wants to change his info;email
db column);By default, authentication and everything else inside Backpack is done using the Backpack\Base\app\Models\BackpackUser
model, which extends Laravel's default App\User
model. If you change the location of App\User
, or want to use a different User model for whatever other reason, you can do so by
user_model_fqn
in config/backpack/base.php
to your new class;BackpackUser
is also inside your new model (this is important for recovering password, etc);If for any reason the Backpack/Base installation process fails for you, you can manually run all the commands in the installer, which are listed below. Failure to install can happens sometimes if the user does not have enough permissions (sudo access is needed) or if the composer command is not registered (and php composer
needs to be run instead).
# Install backpack/generators
composer require backpack/generators --dev
# Install laracasts/generators
composer require laracasts/generators:dev-master --dev
# Publish configs, langs, views and AdminLTE files
php artisan vendor:publish --provider="Backpack\Base\BaseServiceProvider" --tag="minimum"
# Publish config for notifications - prologue/alerts
php artisan vendor:publish --provider="Prologue\Alerts\AlertsServiceProvider"
# Generate users table (using Laravel's default migrations)
php artisan migrate
Then you'll love our premium add-ons - productivity tools and tons of new features.