Starting with Voyager 1.2 you can define a (custom) guard which is used throughout Voyager.
To do so, just bind the name of your auth-guard to VoyagerGuard
.
First, make sure you have defined a guard as per the Laravel documentation.
After that open your AuthServiceProvider
and add the following to the register method:
$this->app->singleton('VoyagerGuard', function () {return 'your-custom-guard-name';});
Now this guard is used instead of the default guard.
First you have to create a new table. Let's call it admins
:
<?phpSchema::create('admins', function (Blueprint $table) {$table->bigIncrements('id');$table->bigInteger('role_id')->unsigned()->nullable();$table->string('name');$table->string('email')->unique();$table->string('avatar')->nullable()->default('users/default.png');$table->string('password')->nullable();$table->string('remember_token')->nullable();$table->text('settings')->nullable()->default(null);$table->timestamps();$table->foreign('role_id')->references('id')->on('roles');});
and a model which extends Voyagers user-model:
<?php​namespace App;​class Admin extends \TCG\Voyager\Models\User{​}
Next, create a guard named admin
in your config/auth.php
:
'guards' => ['admin' => ['driver' => 'session','provider' => 'admins',],​// ...],
And a user provider called admins
:
'providers' => ['admins' => ['driver' => 'eloquent','model' => App\Admin::class,],​// ...],
Next you have to tell Voyager to use your new guard.
Open you AppServiceProvider.php
and add the following to the register
method:
public function register(){$this->app->singleton('VoyagerGuard', function () {return 'admin';});}
Please note that the user-bread is still responsible to edit users - not admins.
Create a BREAD for the admins
table if you want to change Admins.