Voyager и Jetstream: вход в панель администратора ведет на страницу панели инструментов
Я только что начал свой первый проект Laravel и пытаюсь объединить аутентификацию Jetstream с панелью администратора Voyager.
Прежде всего, я установил Jetstream на новую установку Laravel, и до сих пор это работало:
После этого я попытался добавить Voyager для создания CRUD для моего веб-сайта и добавил нового пользователя с
php artisan voyager:admin your@email.com --create
Но всякий раз, когда я пытался войти через URL-адрес «../admin», меня перенаправляли на «../dashboard» из Jetstream.
Даже если я повторно ввел «../admin» в качестве URL-адреса, меня перенаправили. Пока я вошел в систему, я не могу войти в серверную часть Voyager.
Так что я предполагаю, что это какая-то проблема с маршрутизацией/промежуточным программным обеспечением, но я не могу понять, что это за проблема.
В файле маршрутизации web.php есть только основные вещи:
Не уверен, что это имеет значение, но моя IDE распознает Voyager:: как неизвестный класс, даже если он работает так же на другой установке Laravel.
Но, судя по всему, я ожидал, что Route::middleware() перенаправит вошедшего в систему человека, который вводит URL-адрес «../dashboard», в представление панели инструментов, но не более того. Удаление этого маршрута также не помогло решить проблему, так что я думаю, что ошибался.
Но помимо этого остались только чистые маршруты Voyager, поэтому я не уверен, где еще я могу найти решение этой проблемы.
2 ответа
я знаю, что уже поздно, но для других пользователей, у которых была такая же проблема.
- сначала я установил джетстрим
- int .env файл APP_URL=http://localhost:8000
- я установил voyager с фиктивными данными
- я добавил вручную в таблицу user_roles эту линию (админ)
INSERT INTO `user_roles` (`user_id`, `role_id`) VALUES ('1', '1');
и это работает, вы можете посмотреть это видео, которое я нашел на YouTube, я думаю, оно вам поможет.
Вы можете добавить пользовательские ответы на
app/Http/Responses
каталог.
просто создайте новые ответы под названием LoginResponse
затем используйте этот код
<?php
namespace App\Http\Responses;
use Laravel\Fortify\Contracts\LoginResponse as LoginResponseContract;
class LoginResponse implements LoginResponseContract
{
/**
* @param $request
* @return mixed
*/
public function toResponse($request)
{
$home = auth()->user()->is_admin ? '/admin' : '/dashboard';
return redirect()->intended($home);
}
}
Затем привяжите свой LoginResponse в FortifyServiceProvider.
Вы можете использовать этот код
<?php
namespace App\Providers;
// ...
use App\Http\Responses\LoginResponse;
use Laravel\Fortify\Contracts\LoginResponse as LoginResponseContract;
class FortifyServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
// ...
$this->app->singleton(LoginResponseContract::class, LoginResponse::class);
}
}