Хорошо, позвольте мне объяснить мое требование в ближайшее время. У меня есть портал, где поставщики могут зарегистрироваться и добавить свой контент на наш сайт. Обычно регистрация состоит из 5 этапов, когда после того, как поставщик завершил первый этап регистрации, пользователь войдет в систему, а также обновит столбец registration_step
в таблице БД. После того, как поставщик завершил свой первый шаг, он может выйти из системы, а затем, как только он снова войдет в систему, пользователь не сможет go другой URL-адрес, пока он не завершит все этапы регистрации. Итак, я попытался выполнить это sh с помощью промежуточного программного обеспечения, как показано ниже. Обратите внимание, что в этой системе есть 3 разных типа пользователей.
class CheckUserRegistrationStep
{
public function handle($request, Closure $next)
{
$supplier = Auth::guard('supplier');
if ($supplier->check()) {
$supplierRegistrationStep = Supplier::findOrFail($supplier->user()->id)->registration_step;
if ($supplierRegistrationStep == 2) {
return redirect()->route('suppliers.registration-step02-otp-verification');
} else if ($supplierRegistrationStep == 3) {
return redirect()->route('suppliers.registration-step03-nature-of-business');
} else if ($supplierRegistrationStep == 4) {
return redirect()->route('suppliers.registration-step04-categories-and-locations');
} else if ($supplierRegistrationStep == 5) {
return $next($request);
}
} else {
return back();
}
}
}
Но проблема в том, что, когда я использую это промежуточное ПО в контроллере, он выдает ошибку слишком много перенаправлений . Я знаю, что эта ошибка происходит, потому что пользователь снова и снова перенаправляется на один и тот же URL. Поэтому я пытался с таким количеством методов выполнить sh мое требование, но все еще не повезло.
Просто я пытаюсь остановить переход пользователя на другие URL-адреса, пока он не завершит регистрацию, и я не хочу перенаправить пользователя на место, где он останавливает этап регистрации.
Обновление
Ошибка, возникающая после изменения кода @CleanCode's answer
ErrorException
Попытка получить свойство 'headers' не-объекта
Это контроллер
public function __construct()
{
$this->middleware('auth:supplier', ['except' => ['step01', 'step01Store']]);
}