@juan_chikatilo

Как перенаправить пользователя до отрисовывания слоя laravel в vue?

Здравствуйте!
У меня есть такие маршруты в laravel:
Route::get('/admin{any}',function(){
    return view('admin');
})->where('any','.*');

Route::get('/{any}',function(){
return view('index');
})->where('any','.*');


И я хочу, чтобы когда обычный пользователь пытался зайти на страницу админки, слой admin.blade.php не отрисовывался.
Т.е. Я попробовал в vue-router поставить навигационного охранника вот так:
if (to.matched.some(record => record.meta.isAdmin)) {
        if (store.getters['auth/role']!="admin") {
            return redirect({name:'Error403'});
          } 
        }


Он срабатывает, но из-за того, что изначально url был /admin, он отрисовал layout от admin.blade.php, когда должен был от index.blade.php.

Я как понимаю, что должен поставить middleware на данный маршут в laravel. Я написал изначально middleware для своего api, который выглядит так:
if ($request->user()->role=="admin"){
        return $next($request);
        }
        else
        {
            return response(['message'=>"Недостаточно прав для посещения данного ресурса"],403);
        }


И подумал, что его можно будет поставить и на тот маршрут из web.php
Route::get('/admin{any}',function(){
    return view('admin');
})->where('any','.*')->middleware('isAdmin');


Но тут теряется текущий $request->user(), т.е. выбрасывает ошибку, что не найден метод( у меня стоит авторизация через JWT). Потому что тут нужен app.js, где из localstorage берется токен, если он есть.

Помогите, пожалуйста.
1)Как вообще можно взять текущий токен, если бэк не может брать данные из ls?
2)Если нельзя, то что можно сделать
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы