I want to add a custom defender to Laravel that uses Passport, but with a different model (not a user), but when I try to configure a user for this defender, it does not work.
config / auth.php:
<?php
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
'conference' => [
'driver' => 'passport',
'provider' => 'participants',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'participants' => [
'driver' => 'eloquent',
'model' => App\Models\Participant::class,
],
],
'passwords' => [
'users' => [
'provider' => 'users',
'email' => 'spark::auth.emails.password',
'table' => 'password_resets',
'expire' => 60,
],
],
];
in the controller I configure the user for a custom defender:
auth()->guard('conference')->setUser($participant);
api.php:
Route::group(['prefix' => '{activity}', 'middleware' => ['auth:conference', 'api']], function () {
Route::group(['prefix' => 'participant/{participant}'], function () {
Route::any('join', 'API\ConferenceController@join');
});
});
Member Model:
use Laravel\Passport\HasApiTokens;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Participant extends Authenticatable
{
use Enums, SoftDeletes, RequiresUUID, HasApiTokens, Notifiable;
but I can’t access the route that I get 401. When I change the provider so that the “conference guard” is “users”, it works without problems.
What am I missing?