Authorization ফিল্টার একটি গুরুত্বপূর্ণ উপাদান যা অ্যাপ্লিকেশনটির নিরাপত্তা নিশ্চিত করে। এটি যাচাই করে যে, কোনো নির্দিষ্ট রিসোর্স বা অ্যাকশন ব্যবহারকারীকে এক্সেস করতে দেওয়ার আগে, তাদের প্রমাণীকরণ এবং অনুমতি সঠিক কিনা। Custom Authorization Filter তৈরি করার মাধ্যমে আপনি নিজের নির্দিষ্ট নিয়ন্ত্রণ তৈরি করতে পারেন এবং আপনার অ্যাপ্লিকেশনে বিশেষ ধরনের অনুমতি বা নিরাপত্তা চেক করতে পারেন।
এমভিসি ফ্রেমওয়ার্কে, কাস্টম অটোরাইজেশন ফিল্টার তৈরি করার জন্য কিছু সহজ পদ্ধতি অনুসরণ করা হয়, যাতে আপনি আপনার নিজস্ব রোল, পারমিশন বা ব্যবহারকারী অধিকার অনুযায়ী অনুমতি যাচাই করতে পারেন।
১. Custom Authorization Filter তৈরি করা
Custom Authorization Filter তৈরি করতে, সাধারণত কন্ট্রোলারে একটি মেথড তৈরি করা হয় যা চেক করবে যে ব্যবহারকারী অ্যাকশনটি এক্সেস করতে পারবে কিনা। এই কাজটি একটি কাস্টম ফিল্টার বা মিডলওয়্যার ব্যবহার করে করা হয়।
উদাহরণ: Laravel Framework-এ Custom Authorization Filter তৈরি
ধরা যাক, আপনি একটি কাস্টম অটোরাইজেশন ফিল্টার তৈরি করতে চান যা নিশ্চিত করবে যে শুধুমাত্র অ্যাডমিন রোলের ব্যবহারকারী একটি নির্দিষ্ট পেজ এক্সেস করতে পারে।
- Authorization ফিল্টার ক্লাস তৈরি:
Laravel এ কাস্টম অটোরাইজেশন ফিল্টার তৈরি করতে আপনাকে প্রথমে একটি কাস্টম ফিল্টার ক্লাস তৈরি করতে হবে।
// Artisan কমান্ড ব্যবহার করে কাস্টম ফিল্টার তৈরি করা
php artisan make:middleware CheckAdmin
এটি একটি CheckAdmin নামের মিডলওয়্যার ক্লাস তৈরি করবে। এই ক্লাসে আপনি যাচাই করবেন যে, ব্যবহারকারী অ্যাডমিন রোলের কিনা।
- মিডলওয়্যার ক্লাসে কাস্টম চেকিং যুক্ত করা:
// app/Http/Middleware/CheckAdmin.php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class CheckAdmin
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
// যদি ব্যবহারকারী অ্যাডমিন না হন, তাহলে রিডাইরেক্ট করুন
if (!auth()->user() || auth()->user()->role !== 'admin') {
return redirect('/home')->with('error', 'You are not authorized to access this page.');
}
return $next($request);
}
}
এখানে, handle() মেথডের মধ্যে আমরা চেক করেছি যে, ইউজারের রোল admin কিনা। যদি না হয়, তাহলে তারা অ্যাকশনটি এক্সেস করতে পারবে না এবং তাকে অন্য পেজে রিডাইরেক্ট করা হবে।
- মিডলওয়্যার রেজিস্টার করা:
এরপর, মিডলওয়্যারটি app/Http/Kernel.php ফাইলে রেজিস্টার করতে হবে যাতে এটি অ্যাপ্লিকেশনের মধ্যে ব্যবহৃত হয়।
// app/Http/Kernel.php
protected $routeMiddleware = [
// অন্যান্য মিডলওয়্যার
'checkadmin' => \App\Http\Middleware\CheckAdmin::class,
];
এখন, checkadmin মিডলওয়্যারটি অ্যাপ্লিকেশনজুড়ে ব্যবহারযোগ্য।
২. Custom Authorization Filter ব্যবহার করা
এখন যে Custom Authorization Filter তৈরি করেছেন, তা কন্ট্রোলারের রাউটে বা নির্দিষ্ট অ্যাকশনে ব্যবহার করা যাবে।
উদাহরণ: কন্ট্রোলারে Authorization Filter ব্যবহার
// app/Http/Controllers/AdminController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AdminController extends Controller
{
// কন্ট্রোলারের কনস্ট্রাক্টর, যেখানে মিডলওয়্যার ব্যবহার করা হয়েছে
public function __construct()
{
// 'checkadmin' মিডলওয়্যার ব্যবহার করা হচ্ছে
$this->middleware('checkadmin');
}
public function dashboard()
{
return view('admin.dashboard');
}
}
এখানে, AdminController-এর __construct() মেথডে checkadmin মিডলওয়্যারটি অ্যাপ্লাই করা হয়েছে। এর মানে হলো, dashboard() অ্যাকশনটি কেবলমাত্র অ্যাডমিন রোলের ব্যবহারকারীর জন্য অ্যাক্সেসযোগ্য হবে।
রাউট ফাইলের মধ্যে Authorization Filter ব্যবহার
// routes/web.php
Route::get('/admin/dashboard', [AdminController::class, 'dashboard']);
এখন, /admin/dashboard রাউটটি শুধুমাত্র অ্যাডমিনদের জন্যই এক্সেসযোগ্য হবে, অন্যরা এক্সেস করতে পারবেন না।
৩. Custom Error Messages এবং Authorization
আপনি যখন কাস্টম অটোরাইজেশন ফিল্টার তৈরি করেন, তখন ইউজারদের জন্য কাস্টম error messages তৈরি করা গুরুত্বপূর্ণ। এই টেকনিকটি তাদের জানিয়ে দেয় কেন তারা অ্যাকশনটি এক্সেস করতে পারছে না এবং কীভাবে তারা এক্সেস পেতে পারে।
// কাস্টম error message যুক্ত করা
return redirect('/home')->with('error', 'You are not authorized to access this page.');
এটি ইউজারকে একটি কাস্টম ত্রুটি বার্তা প্রদর্শন করবে যা তার জন্য বোঝানো হবে কেন তাকে নির্দিষ্ট রিসোর্সে প্রবেশ করতে দেওয়া হয়নি।
সার্বিকভাবে
Custom Authorization Filters এমভিসি ফ্রেমওয়ার্কে অ্যাপ্লিকেশনের নিরাপত্তা এবং এক্সেস কন্ট্রোল নিশ্চিত করতে সাহায্য করে। মিডলওয়্যার ব্যবহার করে আপনি আপনার নিজস্ব অটোরাইজেশন লজিক তৈরি করতে পারেন, যেমন ইউজারের রোল, পারমিশন এবং অন্য যে কোনো কাস্টম শর্ত অনুযায়ী অ্যাক্সেস কন্ট্রোল পরিচালনা করা। এটি আপনার অ্যাপ্লিকেশনকে আরও নিরাপদ এবং কার্যকরী করে তোলে।
Read more