তারা কোনও পৃষ্ঠা দেখতে পাবে কিনা তা নির্ধারণ করার জন্য আমি কোনও অনুমতি চেক পরিচালনা করছি। এর মধ্যে প্রথমে কিছু মিডলওয়্যারের মাধ্যমে অনুরোধটি পাস করা জড়িত।
আমার যে সমস্যাটি হচ্ছে তা হ'ল আমি নিজেই ডেটা ভিউতে ফিরিয়ে দেওয়ার আগে মিডলওয়্যার এবং নিয়ামক হিসাবে একই ডাটাবেস কোয়েরিটিকে নকল করছি।
সেটআপের উদাহরণ এখানে;
--ways.php
Route::get('pages/{id}', [
'as' => 'pages',
'middleware' => 'pageUser'
'uses' => 'PagesController@view'
]);
- পেজ ইউজারমিটলওয়্যার.এফপি (ক্লাস পেজ ইউজারমিডলওয়ার)
public function handle($request, Closure $next)
{
//get the page
$pageId = $request->route('id');
//find the page with users
$page = Page::with('users')->where('id', $pageId)->first();
//check if the logged in user exists for the page
if(!$page->users()->wherePivot('user_id', Auth::user()->id)->exists()) {
//redirect them if they don't exist
return redirect()->route('redirectRoute');
}
return $next($request);
}
- পেজসকন্ট্রোল.এফপি
public function view($id)
{
$page = Page::with('users')->where('id', $id)->first();
return view('pages.view', ['page' => $page]);
}
আপনি দেখতে পাচ্ছেন, Page::with('users')->where('id', $id)->first()
মিডওয়্যার এবং নিয়ামক উভয় ক্ষেত্রেই পুনরাবৃত্তি হয়। আমার এক থেকে অন্যটির মধ্যে ডেটা পাস করতে হবে যাতে নকল না হয়।