ল্যারাভেলের রিসোর্স কন্ট্রোলারে মিডেলওয়ার

ল্যারাভেলে একটা নির্দিষ্ট রিসোর্স কন্ট্রোলারে আমরা সাধারণত এভাবে মিডেলওয়ার যোগ করিঃ

Route::resource('order', NoteController::class)->middleware('auth');

ফলে এই রিসোর্স কন্ট্রোলারের সব গুলো মেথডেই অথেনটিকেশন মিডেলওয়ারটি যোগ হয়ে যাবে। মানে কেউ যদি লগিন না করে, তাহলে কোন পাবলিক নোটও পাবলিক ইউজার দেখতে পাবে না। এর একটা সমাধান হচ্ছে কন্ট্রোলার ফাইলে এক্সেপশন যোগ করাঃ

class NoteController extends BaseController
{
    public function __construct()
{
   $this->middleware('auth', ['except' => ['index', 'show']]);
}
}

যখন আমরা নতুন একটা কন্ট্রোলার তৈরি করি, তা সাধারণত Controller ক্লাস এক্সটেন্ড করে থাকে। এভাবে একটা কনস্ট্রাকশন যোগ করতে চাইলে BaseController এক্সটেন্ড করতে হবে। এরপর আমরা বলে দিয়েছি কোন কোন মেথডে অথেনটিকেশন মিডেলওয়ার বাদ দিতে। যেমন index এবং show মেথড এক্সেস করা যাবে না লগিন ছাড়া।

Leave a Reply