#authentication #laravel-8
Вопрос:
Я новичок в Laravel 8, я пытаюсь создать систему с несколькими авторизациями для администратора и пользователя. Я сделал охрану для администратора, в FortifyServiceProvider в методе регистрации я добавил return Auth::guard(«администратор»);
Это маршруты
Route::group(['prefix'=> 'admin', 'middleware'=>['admin:admin']], function(){
Route::get('/login', [AdminController::class, 'loginForm']);
Route::post('/login',[AdminController::class, 'storeAdmin'])->name('admin.login');
});
Route::middleware(['auth:sanctum,admin', 'verified'])->get('/admin/dashboard', function () {
return view('dashboard');
})->name('dashboard');
Route::middleware(['auth:sanctum,web', 'verified'])->get('/dashboard', function () {
return view('dashboard');
})->name('dashboard');
Административный контроллер:
<?php
namespace AppHttpControllers;
use IlluminateContractsAuthStatefulGuard;
use LaravelFortifyHttpControllersAuthenticatedSessionController;
use IlluminateHttpRequest;
use IlluminateRoutingController;
use IlluminateRoutingPipeline;
use AppActionsFortifyAttemptToAuthenticate;
use AppActionsFortifyRedirectIfTwoFactorAuthenticatable;
use LaravelFortifyActionsEnsureLoginIsNotThrottled;
use LaravelFortifyActionsPrepareAuthenticatedSession;
use AppHttpResponsesLoginResponse;
use LaravelFortifyContractsLoginViewResponse;
use LaravelFortifyContractsLogoutResponse;
use LaravelFortifyFeatures;
use LaravelFortifyFortify;
use LaravelFortifyHttpRequestsLoginRequest;
class AdminController extends Controller
{
/**
* The guard implementation.
*
* @var IlluminateContractsAuthStatefulGuard
*/
protected $guard;
/**
* Create a new controller instance.
*
* @param IlluminateContractsAuthStatefulGuard $guard
* @return void
*/
public function __construct(StatefulGuard $guard)
{
$this->guard = $guard;
}
public function loginForm(){
return view('auth.login', ['guard' => 'admin']);
}
/**
* Show the login view.
*
* @param IlluminateHttpRequest $request
* @return LaravelFortifyContractsLoginViewResponse
*/
public function create(Request $request): LoginViewResponse
{
return app(LoginViewResponse::class);
}
/**
* Attempt to authenticate a new session.
*
* @param LaravelFortifyHttpRequestsLoginRequest $request
* @return mixed
*/
public function storeAdmin(LoginRequest $request)
{
return $this->loginPipeline($request)->then(function ($request) {
return app(LoginResponse::class);
});
}
/**
* Get the authentication pipeline instance.
*
* @param LaravelFortifyHttpRequestsLoginRequest $request
* @return IlluminatePipelinePipeline
*/
protected function loginPipeline(LoginRequest $request)
{
if (Fortify::$authenticateThroughCallback) {
return (new Pipeline(app()))->send($request)->through(array_filter(
call_user_func(Fortify::$authenticateThroughCallback, $request)
));
}
if (is_array(config('fortify.pipelines.login'))) {
return (new Pipeline(app()))->send($request)->through(array_filter(
config('fortify.pipelines.login')
));
}
return (new Pipeline(app()))->send($request)->through(array_filter([
config('fortify.limiters.login') ? null : EnsureLoginIsNotThrottled::class,
Features::enabled(Features::twoFactorAuthentication()) ? RedirectIfTwoFactorAuthenticatable::class : null,
AttemptToAuthenticate::class,
PrepareAuthenticatedSession::class,
]));
}
/**
* Destroy an authenticated session.
*
* @param IlluminateHttpRequest $request
* @return LaravelFortifyContractsLogoutResponse
*/
public function destroy(Request $request): LogoutResponse
{
$this->guard->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return app(LogoutResponse::class);
}
}
Я могу войти в систему как администратор, но получил ошибку при попытке войти в систему как пользователь
спасибо за помощь