我在用户和团队之间有一对多的关系。
如果用户注册,他将被转发到" / welcome"在第一次登录时必须选择一个团队,team_id存储在用户表中。
问题是用户可以通过从侧面输入另一个URL来绕过此过程。如果用户尚未选择团队,如何将用户从所有页面重定向到/ welcome?如果他选择了团队,如何为用户锁定页面?
我已经看过laravel的中间件,但不明白我是如何实现它的。
答案 0 :(得分:3)
如你所说,你应该使用中间件....基本上你创建一个中间件让我们称之为TeamMiddleware
您检查用户是否未选择他的团队,如果是,您将其重定向回选择团队链接
if(is_null(Auth::user()->team_id))
return redirect(route('team_select'));
然后你将你的链接包装在TeamMiddleware
中 Route::group([ 'middleware' => 'TeamMiddleware' ], function () {
Route::post('/link1' , 'LinkController@func1);
Route::post('/link2' , 'LinkController@func1);
Route::post('/link3' , 'LinkController@func1);
Route::post('/link4' , 'LinkController@func1);
});
Route::post('/team/select' , 'LinkController@select_team)->name('team_select');