Это требование проекта. где у меня есть несколько логинов, но некоторые пользователи не могут получить доступ к нескольким модулям. как супер администратор и аналитик могут получить доступ ко всем модулям, но разработчик может использовать только собственный контроллер.
так что в этом случае, как я могу охранять контроллер с несколькими входами в систему. Также обратите внимание, что у меня есть отдельная страница входа и таблица в базе данных.
Например, к bookbookController могут обращаться администраторы и аналитики, но не разработчики.
поэтому, пожалуйста, скажите мне, как я могу это реализовать?
я использую это для ::
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
для админов. так что в моей модели пользователя я сделал это
protected $casts = [
'is_admin' => 'boolean',
];
public function isAdmin()
{
return $this->is_admin;
}
Создайте новое промежуточное ПО для того типа ролей, который вы хотите использовать
php artisan make:middleware Admin
php artisan make:middleware Agent
Файлы промежуточного программного обеспечения будут созданы в App \ 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',
убедитесь, что вы создали правильные маршруты для перенаправления, как мы упоминали в наших файлах промежуточного программного обеспечения.
после этого вы почти закончили. Теперь, чтобы проверить, является ли пользователь администратором или обычным пользователем, добавьте это в метод конструктора вашего контроллера.
Действия разрешены только для администраторов
public function __construct()
{
$this->middleware('auth');
$this->middleware('admin');
}
Действие разрешено только для обычных пользователей
публичная функция __construct ()
{
$this->middleware('auth');
$this->middleware('agent');
}
Других решений пока нет …