Laravel Passport, две таблицы для входа в API - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь сделать аутентификацию пользователя с двумя таблицами, другой таблицей «пользователи» и таблицей «пользователи», которая является таблицей с Laravel по умолчанию, используя паспорт Laravel.Деталь в том, что когда я пытаюсь войти со второй таблицей, я не могу выполнить аутентификацию, потому что я не узнаю пользователей второй таблицы.

-Tengo el modelo User2 -> protected $guard_name = 'api2';

-Использование otra coneccion -> protected $connection = 'mysql2';

**config/auth.php**

'guards' => [
'web' => [
    'driver' => 'session',
    'provider' => 'users',
],

'api' => [
    'driver' => 'passport',
    'provider' => 'users',
],

'api2' => [
    'driver' => 'passport',
    'provider' => 'users2',
  ], 
],

'providers' => [

'users' => [
    'driver' => 'eloquent',
    'model' => App\User::class,
],
'user2' => [
    'driver' => 'eloquent',
    'model' => App\User2::class,
],
],

Мой контроллер

public function login(Request $request)
 {
if (Auth::attempt($request->only('email', 'password'))) {
  $email = $request->only('email');
  $token =  $user->createToken('123456')->accessToken;
  $user->withAccessToken($token);
  $email=json_decode(json_encode($email));
  $user = User2::where('email', $email->email )->first()->only('id','name','email','employee_id');

  $user1 = User::find($user['id']);

  if(!$user1->hasAnyRole(Role::all())){
    return response()->json([
      'success' => false,
      'data' => '',
      'msg' => "does not have assigned role"
    ], 403);
  }
  $roles = $user1->getRoleNames()->first();
  $role = Role::findByName($roles,'api');
  $user=json_decode(json_encode($user));

  return response()->json([
    'success' => true,
    'token' => $token,
    'data' => [
      'user_id' => $user->id,
      'name' => $user->name,
      'email' => $user->email,
      'employee_id' => $user->employee_id,
      'role_id' => $role->id,
      'role_name' => $role->name
        ],
    'msg' => "Successfully"
  ], 200);
} else {
  return response()->json(['error' => 'Unauthorised'], 401);
}
}

1 Ответ

0 голосов
/ 30 ноября 2018

Хотя Laravel Passport полезно для большинства разработчиков, все еще остается загадкой, как проверять подлинность нескольких (пользовательских) моделей в нем, поскольку под ним (по умолчанию) он выглядит только на таблице users.

https://github.com/jsdecena/laravel-passport-mutiauth

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...