In laravel 11 I get the error while login. Now the error occured on createToken method.
Controller
public function login($request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required',
]);
$member = Member::where('email', $request->email)->first();
if (!$member || !Hash::check($request->password, $member['password'])) {
return response()->ErrorResponse('Email or password is incorrect.');
}
Auth::login($member);
$token = $member->createToken('Personal Access Token')->plainTextToken;
return response()->SuccessResponse($member);
}
The code works till the line Auth::login($member). When I call the CreateToken the error occurs.
Model/Member.php
namespace App\Models;
use MongoDB\Laravel\Eloquent\Model;
use Laravel\Sanctum\HasApiTokens;
use MongoDB\Laravel\Auth\User as Authenticatable;
class Member extends Authenticatable
{
use HasApiTokens;
protected $connection = 'mongodb';
protected $collection = 'Members';
protected $fillable = [
'userName', 'email', 'status', 'createdDate', 'password'
];
protected $casts = [
'createdDate' => 'datetime',
];
}
config/auth.php
'guards' => [
'api' => [
'driver' => 'mongodb',
'provider' => 'members',
'hash' => false,
],
],
'providers' => [
'members' => [
'driver' => 'eloquent',
'model' => App\Models\Member::class,
],
],
To use Laravel Sanctum with Laravel MongoDB, modify the PersonalAccessToken model provided by Sanctum to use the DocumentModel trait from the MongoDB\Laravel\Eloquent namespace.
Created Model Models/PersonalAccessToken.php
namespace App\Models;
use Laravel\Sanctum\PersonalAccessToken as SanctumToken;
use MongoDB\Laravel\Eloquent\DocumentModel;
class PersonalAccessToken extends SanctumToken
{
use DocumentModel;
protected $connection = 'mongodb';
protected $collection = 'personal_access_tokens';
protected $primaryKey = '_id';
protected $keyType = 'string';
}