Как настроить множественную аутентификацию в Laravel 5.3 для двух разных таблиц (пользователей и администратора).
По умолчанию в Laravel есть модель пользователя.
Как настроить множественную аутентификацию в Laravel 5.3 для двух разных таблиц (пользователей и администратора).
По умолчанию в Laravel есть модель пользователя.
Похоже, вам нужно реализовать роли. Вы можете использовать пользовательскую модель Laravel по умолчанию, и вам нужно будет создать ролевую модель:
Модель пользователя
...
public function role() {
return $this->belongsToMany('App\User', 'user_roles', 'role_id', 'user_id');
}
public function inRole($role) {
return (bool) $this->role()->where('name', '=', $role)->count();
}
...
Образец для подражания
...
public function users() {
return $this->belongsToMany('App\Role', 'user_roles', 'user_id', 'role_id');
}
...
Вам нужно будет создать 2 таблицы в дополнение к вашей таблице пользователей:
Table users
id | name
---------
1 | John
2 | Michael
Table roles
id | name
---------
1 | Admin
2 | Member
Table user_roles
id | user_id | role_id
----------------------
1 | 1 | 1
2 | 2 | 1
Теперь вы можете реализовать разные разрешения для разных ролей, которые у вас есть. Вы можете определить разрешения с помощью политик или шлюзов. Дополнительную информацию о том, как это сделать, см. в документации.
Теперь, чтобы перенаправить ваших участников в /users/home, а администраторов в /admin/dashboard, вы можете сделать следующее:
Вы определяете adminAccess в своем AuthServiceProvider:
public function boot() {
$this->registerPolicies();
...
// Define adminAccess
Gate::define('adminAccess', function ($user) {
return $user->inRole('admin');
});
}
Обновление. Теперь вы можете защитить свои административные маршруты с помощью промежуточного программного обеспечения следующим образом:
public function handle($request, Closure $next) {
if (Auth::check() && Auth::user()->inRole('admin')) {
return $next($request);
}
return redirect('/');
}
Затем зарегистрируйте Middleware в вашем Kernal.php в переменной $routeMiddleware
. Затем вы можете поместить все свои административные маршруты в группу и использовать там промежуточное ПО:
Route::group(['middleware' => 'auth']) {
// Define your routes
}
Если вам нужна мультиаутентификация на основе охранников, попробуйте этот пакет для laravel 5.3 https://github.com/Hesto/multi-auth