как охранять контроллер несколькими пользователями?

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

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

для примера 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 } 

Я хочу использовать это в методе конструктора класса

Related of "как охранять контроллер несколькими пользователями?"

Вот моя реализация для контроля доступа для администратора и пользователей (агентов в моем случае). У меня есть 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'); 

}