Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 11.12.2017 16:32:18

Как для авторизации пользователя использовать стороннюю таблицу

Версия Laravel последняя;
Версия PHP в формате 7.0;
Операционная система и её версия  Windows 10 x64;
Вендор и версия сервера БД (QpenServer 5.2.2, MySQL_5.7_x64)
Вендор и версия Веб-сервера в формате Apache-PHP-7-Nginx_1.10
OpenServer PHP;

Задача, что должно происходить в целом, техническое задание.
Создал модель Cooperator для таблицы Сотрудники. Модель ниже. На нее подвесил регистрацию,т.е всё что пользователь вносит в представление регистрации (поля пароль,логин,должность и другие..) записываются в соответствующие поля таблицы Сотрудники.
!!!А вот теперь и загвоздка как сделать чтобы LoginController (или что-то),при входе, сравнивала поля из таблицы Сотрудники(не users) с введенными данными, и дальше срабатывала по стандартной логике этого контроллера. Как выкинуть эту навязанную таблицу users из пищевой цепочки, так сказать...

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class Cooperator extends Authenticatable
{
    use Notifiable;
    protected $table = 'Сотрудники';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'ФИО', 'email', 'Пароль','Должность','Логин'
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'Пароль', 'remember_token'
            ];
}

Не в сети

#2 11.12.2017 18:13:08

Re: Как для авторизации пользователя использовать стороннюю таблицу

Я делал кое-что похожее, т.к. приходится эволюционно приспосабливать тонны легаси.

Боюсь не смогу дать детальное описание, ибо много текста будет. smile Общий подход такой: надо настроить свой "гард", описать для него параметры. В мидлваре указывать имя этого гарда.

https://laravel.com/docs/5.5/authentica … tom-guards
https://gistlog.co/corbosman/d0951f9c6cdba20f644e

/config/auth.php

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

        'customer' => [
            'driver' => 'session',
            'provider' => 'customer_users',
        ],

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

        'customer_users' => [
            'driver' => 'customer_driver',
            'model' => App\Models\CustomerUser::class,
        ],

    ],
...
    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
        ],
        'customer_users' => [
            'provider' => 'customer_users',
            'table' => 'password_resets',
            'expire' => 60,
        ],
    ],
...

/app/Providers/AuthServiceProvider.php

...
    public function boot()
    {
        $this->registerPolicies();
        Auth::provider('customer_driver', function($app, array $config) {
            // Return an instance of Illuminate\Contracts\Auth\UserProvider...
            return new CustomerUserProvider(new PlainHasher(), $config['model']);
        });
    }
...

/routes/web.php

...
    Route::group(['middleware' => ['auth:customer']], function () {
        Route::get('blablabla', ['uses' => 'MyController@action', 'as' => 'ololo']);
        ...
    });
...

Изменено artoodetoo (11.12.2017 18:16:20)


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

Подвал раздела