Laravel Multi Auth из более чем двух таблиц - PullRequest
0 голосов
/ 27 октября 2018

Я хочу написать веб-сервис с laravel
Я пытаюсь аутентифицировать пользователей и admin формы users таблицы и admins таблицы соответственно.
В этом веб-сервисе аутентификация пользователя и администратора отличается.Аутентификация администраторов email и пользователей phone number. Администраторы получают доступ к панели администратора по Web маршрутам, а пользователи используют API маршрутов.

Как я знаю, Auth::attempt используется для аутентификации admins изadmins table, но я хочу аутентифицировать других пользователей из users table и admin из admin table.
Может кто-нибудь объяснить Multi Auth из более чем двух таблиц с примером ??

Я знаю, что Auth::attempt используется для аутентификации users из таблицы пользователей, но я изменил имя.

Что я сделал до сих пор

Охранники
config / auth.php

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

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

Провайдеры

'providers' => [
        'admins' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class,
        ],
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
    ],

Маршруты
web.php (администраторы)

Route::group(['namespace' => 'Auth'] , function (){

    // Authentication Routes...
    $this->get('login', 'LoginController@showLoginForm')->name('login');
    $this->post('login', 'LoginController@login');
    $this->get('logout', 'LoginController@logout')->name('logout');

    // Registration Routes...
    $this->get('register', 'RegisterController@showRegistrationForm')->name('register');
    $this->post('register', 'RegisterController@register');

    // Password Reset Routes...
    $this->get('password/reset', 'ForgotPasswordController@showLinkRequestForm')->name('password.request');
    $this->post('password/email', 'ForgotPasswordController@sendResetLinkEmail')->name('password.email');
    $this->get('password/reset/{token}', 'ResetPasswordController@showResetForm')->name('password.reset');
    $this->post('password/reset', 'ResetPasswordController@reset');
});

api.php (пользователи)

Route::group(['prefix' => 'android/v1' , 'namespace' => 'Api\Android\v1'] , function (){
    $this->post('login' , 'UserController@login');
    $this->post('register' , 'UserController@register');
});

UserController
api/android/v1/UserController.php

public function login(Request $request)
{
    $validData = $this->validate($request, [
        'mobile' => 'required|exists:users',
        'password' => 'required'
    ]);
    if(! auth()->attempt($validData)) {
        return response([
            'data' => 'data not true',
            'status' => 'error'
        ],403);
    }

    return new UserResource(auth()->user());
}

1 Ответ

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

Моя первая рекомендация будет иметь разные контроллеры для ваших администраторов и ваших пользователей, тогда вы можете указать, почему именно тот охранник, который вы собираетесь использовать для обработки запроса.

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