سلام
من یه کنترلر دارم به اسم DashboardController که چک میکنه اگه یوزر ادمین باشه میفرستتش پنل ادمین اگه نه میفرسته پنل یوزر ، بعد از این کنترلر یه فرزند به اسم AdministratorDashboardController و UserDashboardController دارم که صفحه مربوط به پنل کاربر خودشونو بر میگردونن ، کنترلر های ریسورس مربوط به ادمین هم از AdministratorDashboardController ارث بری میکنند ، یوزر هم به همین شکل ...
من الان مشکلم اینه که میخام چک کنم که اگه یوزر لاگین کرده ، اطلاعات مربوط به profile شو وارد نکرده باشه نتونه به پنل ادمین و تمام بخش هاش (که هر کدوم کنترلر ریسورس خودشونو دارن) دسترسی داشته باشه و مثلا ریدایرکت بشه به صفحه ساخت پروفایلش ، ولی میخوام بدونم راهی هست که تو تمام کنترلر های فرزند این قضیه چک بشه و من مجبور نباشم تو تک تک متود های کنترلر ریسورس و ... فراخوانیش کنم ؟؟؟؟؟
این کنترلر DashboardController
class DashboardController extends Controller
{
public function __construct()
{
$this->middleware(['auth:web']);
}
public function index()
{
if(Auth::check()){
if(Auth::user()->getUserType() == 'administrator') {
return redirect(route('administrator.dashboard'));
}
if(Auth::user()->getUserType() == 'user') {
return redirect(route('user.dashboard'));
}
}
return redirect(route('/'));
}
protected function checkUserHasProfile() {
if(Auth::check()) {
return Auth::user()->hasProfile();
}
return redirect(route('login'));
}
}
این کنترلر AdministratorDashboardController
class AdministratorDashboardController extends DashboardController
{
public function __construct() {
parent::__construct();
$this->middleware(['CheckAdministrator']);
}
public function index()
{
if(!$this->checkUserHasProfile()) {
return redirect(route('profiles.create'));
}
return view('administrator.index');
}
}
سلام از middleware استفاده کنید،
یعنی یه middleware جدید بسازید،
البته به این نکته توجه کنید که از لاراول 5.3 به بعد شما از session ها در متد های construct نمی تونید استفاده کنید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟