Я пытаюсь внедрить систему регистрации пользователей в Laravel 5.7, где столкнулся с проблемой.
У меня есть две таблицы для пользователей — администратора (созданные путем копирования аутентификации Laravel по умолчанию), новые маршруты, новое промежуточное программное обеспечение для администратора. Все работает нормально при использовании охранников.
Я пытался ограничить вход пользователя в систему, добавив функцию одобрения/отклонения.
Я добавил дополнительный столбец - admin(boolean) в таблицу Users.
В контроллере входа в систему - страница LoginController.php я добавил
protected function authenticated($request, $user)
{
if ( $request->user()->admin != 1)
// if($user->admin != 1)
{
return redirect()->route('approval');
}
else
{
return redirect('/engineer');
}
}
так что, когда администратор равен 1, я перенаправляюсь на «/ инженер», где, как и в других случаях, я перенаправляюсь на «одобрение».
Он работает как хотелось!.
Проблема, с которой я сейчас столкнулся, заключается в том, что если я попытаюсь получить доступ к «инженеру» с помощью пользователя, чей аккаунт не утвержден, я смогу получить доступ к странице. Я не уверен, как это ограничить. Страница по-прежнему доступна только для всех.
Поскольку к контроллеру будут обращаться как пользователь, так и администратор, я использовал __construct в контроллере.
веб.php
Route::resource('engineer', 'engineerController');
инженерконтроллер.php
public function __construct()
{
$this->middleware('auth:web,admin');
}
Насколько я понимаю, условие проверяется только тогда, когда пользователь входит в систему и после его выхода.
Нужно ли мне создавать новое промежуточное ПО, чтобы авторизованная страница оставалась нетронутой?
Я самоучка и новичок в laravel. Я почти уверен, что не следую правильной практике. Я что-то начал и пытался следовать этому, пока не закончу. Пожалуйста, проведите меня через это.
Наряду с этим, пожалуйста, дайте мне, как я мог бы сделать это лучше.