Это требование к проекту. где у меня несколько логинов, но некоторые пользователи не могут получить доступ к нескольким модулям. как супер администратор и аналитик могут получить доступ ко всему модулю, но разработчик может использовать только собственный контроллер.
поэтому в этом случае, как я могу охранять контроллер с несколькими входами. также обратите внимание, что у меня есть отдельная страница входа и таблица в базу данных.
для примера phonebookController может получить доступ супер администратора и аналитика, но не разработчиков. поэтому, пожалуйста, скажите мне, как я могу это реализовать?
Я использую это для ::
if( Auth::guard('superAdmin')->check() ) { $author =Auth::guard('superAdmin')->User()->id ; } else if( Auth::guard('analysts')->check() ) { $author =Auth::guard('analysts')->User()->id; } else { $author =Auth::guard('supervisor')->User()->id }
Я хочу использовать это в методе конструктора класса
Вот моя реализация для контроля доступа для администратора и пользователей (агентов в моем случае). У меня есть boolean
поле в моей пользовательской таблице ( is_admin
), которое равно 0
для обычных пользователей и 1
для админов. поэтому в моей модели User я сделал это
protected $casts = [ 'is_admin' => 'boolean', ]; public function isAdmin() { return $this->is_admin; }
Создайте новое промежуточное ПО для типа ролей, и вы хотите использовать
php artisan make:middleware Admin
php artisan make:middleware Agent
Файлы промежуточного программного обеспечения будут созданы в приложении \ Http \ Middleware \ добавить это в класс внутри Admin.php
public function handle($request, Closure $next) { if ( Auth::check() && Auth::user()->isAdmin() ) { return $next($request); } return redirect('/agent'); }
и это Agent.php
public function handle($request, Closure $next) { if ( Auth::check() && !Auth::user()->isAdmin() ) { return $next($request); } return redirect('/home'); }
После этого зарегистрируйте ваше промежуточное программное обеспечение с laravel для этого, добавьте это в protected $routeMiddleware
в свой Kernel.php, который находится в app\Http\Kernel.php
'admin' => 'App\Http\Middleware\Admin', 'agent' => 'App\Http\Middleware\Agent',
убедитесь, что созданы правильные маршруты для перенаправления, как мы упоминали в наших файлах промежуточного программного обеспечения. после этого вы почти закончили. Теперь, чтобы проверить, является ли пользователь администратором или обычным пользователем, добавьте это в конструкторский метод вашего контроллера.
Действия разрешены только для пользователей admin
public function __construct() { $this->middleware('auth'); $this->middleware('admin'); }
Действие разрешено только для обычных пользователей
public function __construct () {
$this->middleware('auth'); $this->middleware('agent');
}