I have two users admin/user i want to authenticate this two users for api, it is working for one user but its not working for admin
see what i have tried in admin c
I managed to do it through middleware, hopefully, this will help you - Laravel Passport Multiple Authentication using Guards
you can implement multiauth in laravel passport you have to follow below steps
1) create 4 guards in my situation i created like
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
'admin-api' => [
'driver' => 'passport',
'provider' => 'admin',
],
'admin' => [
'driver' => 'session',
'provider' => 'admin',
],
],
then when logging that type of user in controller make sure you are using sessio driver guards like
usercontroller.php
public function login(){
if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
$user = Auth::user();
$success['token'] = $user->createToken('MyApp')->accessToken;
return response()->json(['success' => $success], $this->successStatus);
}
else{
return response()->json(['error'=>'Unauthorised'], 401);
}
}
in admincontroller.php
public function login(){
if(Auth::guard('admin')->attempt(['email' => request('email'), 'password' => request('password')])){
$user = Auth::guard('admin')->user();
$success['token'] = $user->createToken('admin')->accessToken;
return response()->json(['success' => $success], $this->successStatus);
}
else{
return response()->json(['error'=>'Unauthorised'], 401);
}
}
and when checking the token use the passport driver guard like
public function getDetails()
{
$user = Auth::guard('admin-api')->user();
return response()->json(['success' => $user], $this->successStatus);
}
and in middleware
Route::group(['middleware' => 'auth:api'], function(){
Route::post('admin/get-details', 'API\Admin\AdminController@getDetails');
});