У меня есть маршрут регистрации.После регистрации на шаге 1 он отправляет электронное письмо пользователю, чтобы подтвердить свою учетную запись и ссылку на его электронную почту.После нажатия на ссылку, он должен перенаправить на signup/step2
, и закончить, и он может получить доступ к job-seeker/home
.
, поэтому логика после окончания регистрации, пользователь не может снова посетить signup/step2
, потому что пользователь ужезакончил заполнить форму.и до заполнения signup/step2
он не может получить доступ также к job-seeker/home
.Так что все наоборот.
в основном мое промежуточное ПО было первым: проверьте, выполнил ли пользователь шаг 2 и добавил ли он в столбец is_completed
в базе данных.затем на втором промежуточном программном обеспечении - посещать только его маршрут по своей роли, он не может получить доступ к другим маршрутам из другой роли и перенаправить в свой дом в зависимости от его роли.
Но это бросает мне слишком много перенаправления и переключенияобе стороны, даже я еще не заполнил step2 еще.Это мой GIF ниже.
![enter image description here](https://i.stack.imgur.com/5ysfi.gif)
MyCode
Ядро.php
class Kernel extends HttpKernel
{
...
protected $routeMiddleware = [
...
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'isCompleted' => \App\Http\Middleware\IsCompleted::class,
];
Middleware / IsCompleted.php
class IsCompleted
{
public function handle($request, Closure $next)
{
if(auth()->user()->isCompleted == 1){
return $next($request);
}
// if 0, redirect to step2
return redirect()->route('register.step2');
}
Middleware/RedirectIfAuthenticated.php
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
if ( Auth::user()->hasRole('job-seeker') ) {
return redirect()->route('job-seeker.home');
} else if(Auth::user()->hasRole('admin')) {
return redirect()->route('admin.home');
}
}
return $next($request);
Маршруты / Web.php
<?php
Route::get('/', function () {
return view('welcome');
});
Route::group(['middleware' => ['verified', 'isCompleted']], function() {
Route::group(['prefix' => 'admin', 'name' => 'admin.'], function() {
Route::get('/home', function(){ return "test"; })->name('admin.home');
});
Route::group(['prefix' => 'job-seeker', 'name' => 'job-seeker.'], function() {
Route::get('/home', 'Jobseeker\HomeController@index')->name('job-seeker.home');
});
});
Auth::routes(['verify' => true, 'register' => false]);
Route::get('signup/{usertype}' , 'Auth\RegisterController@getStep1')->name('register.step1');
Route::post('signup/{usertype}' , 'Auth\RegisterController@postStep1');
Route::group(['middleware' => ['auth']], function() {
Route::get('signup/step2' , 'Auth\RegisterController@getStep2')->name('register.step2');
Route::post('signup/step2' , 'Auth\RegisterController@postStep2');
});
РЕДАКТИРОВАТЬ 1
Я осматриваю страницу и перехожу на вкладку сети, и вот результат.
![enter image description here](https://i.stack.imgur.com/Hphbv.png)