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

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

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

Например, к 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    }

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

0

Решение

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

}

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]