Я использую Laravel 5.1.26, включая авторизацию с политиками. У меня есть базовая модель ACL, где у пользователя есть Роль, конечно же целое поле Роль.Авторизация не работает для пользователей Поиск
Мои Роли: 0 - Администратор (может выполнять любую операцию над пользователями); 1- Оператор (не может выполнять какую-либо операцию над пользователями); 2- Viewer (не может выполнять никаких действий над пользователями).
Предоставляю возможность выполнять поиск пользователя. Только администраторы могут выполнять это, потому что мое определение роли. Итак, у меня есть метод в UserController для отображения моих результатов:
public function postSearch(Request $request)
{
$this->authorize('search', User::class);
$query = User::select('name', 'email')
->where('name', 'LIKE', "%$request->name%")
->where('email', 'LIKE', "%$request->email%")
->where('role', '=', "%$request->role%");
return $this->displayResult($query, $request);
}
Как вы видите, метод авторизированного выполнить проверку, а остальная часть коды создает результат. Просто.
Проблема в том, что если при поиске (с помощью пользователя администратора для всех случаев) для пользователя оператора, то все мои операции отключены: создавать, удалять, редактировать и т.д. То же поведение, если при поиске пользователь просмотра ,
Но если я ищу пользователя Administrator, то все мои операции будут включены!
Итак, я предполагаю, что метод авторизации получает найденный пользователь! Пользователь не аутентифицирован. Как я могу это решить? Я передаю класс User ::, потому что, если я ничего не пропускаю, мои политики не работают (поэтому я следил за последним комментарием здесь https://laracasts.com/discuss/channels/laravel/laravel-511s-new-authorization-doesnt-read-policies/?page=2).
Спасибо.