Д
Во-вторых, сделайте метод готовый в моделе user что-то вроде такого
...
function isAdmin() {
Return $this->role ===10;
}
И на этом подобии все остальные роли тоже пройдите. Вдруг вы в дальнейшем измените ID ролей или у вас пользователю можно станет присваивать несколько ролей. Тогда вам не придётся ползать по всему проект и править эту проверку
В-третьих, вносите логику разграничений доступа из route файла. Этот файл вообще не должен такие вещь знать. Создавайте свои Middleware на подобии onlyForAdmin и убираейте туда все маршруты, которые доступны только для алмина
В-четвёртых, как сказали выше, вы не можете без подключения Middleware получить авторизированного пользователя,. Т к. Именно там и происходит формирование данных авторизированного пользователя =)
Вообщем, я делаю get запрос к главное странице сайта, и если пользователь не авторизован то отправлять его на /login
Я скопировал стандартный middleware Authenticate и назвал его AuthenticateView и в нем пишу такой код
if (! $request->expectsJson()) {
return route('login');
}
Этот мидлвейр для запросов к роутингу Laravel а стандартный Authenticate возвращает
exit("nologin");для JS запросов на vue.
В роутере Laravel web.php я делаю
Route::middleware('authView:api')->get('/', function (Request $request) {
И меня всегда перебрасывает на /login
если убираю middlware то попадаю на страницу где идет запрос на получение данных :
window.axios.get("api/data").then(response => { this.user = response.data });
И все данные авторизации возвращаются.
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Вопрос в том, почему не срабатывает middleware И всегда показывает что я не авторизирован и бросает на /login