Custom Authorization Middleware তৈরি করা

Authentication এবং Authorization - ফ্যালকন (Phalcon) - Web Development

284

Phalcon ফ্রেমওয়ার্কে Authentication এবং Authorization ব্যবস্থাপনা অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি একটি সিকিউর অ্যাপ্লিকেশন তৈরি করছেন। Middleware ফ্রেমওয়ার্কে এমন একটি লজিক্যাল স্তর যা রিকোয়েস্ট প্রক্রিয়াকরণের আগে বা পরে কাজ করে এবং এটি ব্যবহারকারীর authorization যাচাই করতে সহায়ক হতে পারে।

Phalcon এ, আপনি কাস্টম Authorization Middleware তৈরি করতে পারেন যা ইনকামিং রিকোয়েস্টে ব্যবহারকারীর অনুমতি যাচাই করবে এবং তার পরবর্তী প্রক্রিয়াকরণ নির্ধারণ করবে। এই গাইডে, আমরা দেখব কীভাবে Phalcon এ কাস্টম Authorization Middleware তৈরি করা যায়।


Phalcon এ Middleware তৈরি করা

Phalcon এর মধ্যে Middleware তৈরি করার জন্য, আমরা একটি Event-driven প্রক্রিয়া ব্যবহার করি। Middleware সাধারণত HTTP রিকোয়েস্ট হ্যান্ডলিং এর অংশ, তবে Phalcon এ dispatcher এবং EventsManager ব্যবহার করে এটি তৈরি করা হয়। কাস্টম Authorization Middleware তৈরি করতে, আমরা রিকোয়েস্ট এবং সেশন যাচাই করার জন্য কাস্টম ইভেন্ট হ্যান্ডলার ব্যবহার করব।


১. Authorization Middleware এর জন্য কাস্টম ক্লাস তৈরি করা

প্রথমে, আমাদের একটি কাস্টম Authorization Middleware ক্লাস তৈরি করতে হবে, যা HTTP রিকোয়েস্ট যাচাই করবে। উদাহরণস্বরূপ, আমরা একটি ক্লাস তৈরি করব যেটি ব্যবহারকারীর অথেন্টিকেশন এবং অথরাইজেশন যাচাই করবে।

use Phalcon\Events\Event;
use Phalcon\Mvc\Application;
use Phalcon\Http\Request;

class AuthorizationMiddleware
{
    public function beforeHandleRequest(Event $event, Application $application)
    {
        // HTTP রিকোয়েস্ট পান
        $request = $application->getDI()->getShared('request');
        
        // ইউজারের অথেন্টিকেশন চেক
        if (!$this->checkAuthentication($request)) {
            // যদি অথেন্টিকেশন ব্যর্থ হয়, রিডাইরেক্ট করুন
            return $this->redirectToLogin($application);
        }

        // ইউজারের অথরাইজেশন চেক
        if (!$this->checkAuthorization($request)) {
            // যদি অথরাইজেশন ব্যর্থ হয়, রিডাইরেক্ট করুন
            return $this->redirectToForbidden($application);
        }

        // সব কিছু ঠিক থাকলে, রিকোয়েস্ট এগিয়ে যাবে
        return true;
    }

    private function checkAuthentication(Request $request)
    {
        // এখানে ব্যবহারকারীর অথেন্টিকেশন যাচাই করুন
        // যেমন সেশন বা টোকেন চেক করা
        $user = $request->getSession()->get('user');
        return isset($user);  // যদি ইউজার সেশন থাকে, তবে অথেন্টিকেশন সফল
    }

    private function checkAuthorization(Request $request)
    {
        // এখানে ব্যবহারকারীর অথরাইজেশন যাচাই করুন
        // যেমন ইউজারের রোল বা পারমিশন চেক করা
        $user = $request->getSession()->get('user');
        return isset($user['role']) && $user['role'] === 'admin';  // উদাহরণস্বরূপ: রোল চেক
    }

    private function redirectToLogin(Application $application)
    {
        $response = $application->getDI()->getShared('response');
        return $response->redirect('/login');
    }

    private function redirectToForbidden(Application $application)
    {
        $response = $application->getDI()->getShared('response');
        return $response->redirect('/forbidden');
    }
}

এখানে, AuthorizationMiddleware ক্লাসে কিছু গুরুত্বপূর্ণ পদ্ধতি রয়েছে:

  • checkAuthentication(): এটি যাচাই করে যে ব্যবহারকারী লগ ইন করেছেন বা না।
  • checkAuthorization(): এটি যাচাই করে যে ব্যবহারকারী নির্দিষ্ট রোল বা অনুমতি পেয়েছে কিনা।
  • redirectToLogin(): যদি অথেন্টিকেশন ব্যর্থ হয়, এটি ব্যবহারকারীকে লগইন পেজে রিডাইরেক্ট করবে।
  • redirectToForbidden(): যদি অথরাইজেশন ব্যর্থ হয়, এটি ব্যবহারকারীকে "Forbidden" পেজে রিডাইরেক্ট করবে।

২. Middleware রেজিস্টার করা

এখন, আমাদের AuthorizationMiddleware ক্লাসটি EventsManager এর মাধ্যমে রেজিস্টার করতে হবে। এই কাজটি আমরা beforeHandleRequest ইভেন্টের সাথে করব যাতে এটি রিকোয়েস্ট হ্যান্ডলিংয়ের আগে চলতে পারে।

use Phalcon\Mvc\Application;
use Phalcon\Events\Manager as EventsManager;

$eventsManager = new EventsManager();

// AuthorizationMiddleware যুক্ত করা
$eventsManager->attach('application:beforeHandleRequest', new AuthorizationMiddleware());

$application = new Application($container);
$application->setEventsManager($eventsManager);

// অ্যাপ্লিকেশন হ্যান্ডলিং
$application->handle($_SERVER["REQUEST_URI"]);

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


৩. Middleware-এর সাথে কাস্টম রাউটিং

Phalcon এর রাউটিং সিস্টেমে Middleware ব্যবহার করে, আপনি রিকোয়েস্টের ধরন অনুযায়ী বিভিন্ন পদ্ধতি নির্ধারণ করতে পারেন। উদাহরণস্বরূপ, শুধুমাত্র কিছু রাউটে কাস্টম অথরাইজেশন middleware প্রয়োগ করতে পারেন।

$router->add('/admin', 'AdminController::index')->before(
    function () use ($eventsManager) {
        $eventsManager->fire('application:beforeHandleRequest', $this);
    }
);

এখানে, /admin রাউটে রিকোয়েস্ট পাঠানো হলে, কাস্টম অথরাইজেশন চেক করা হবে।


সারাংশ

Phalcon ফ্রেমওয়ার্কে Custom Authorization Middleware তৈরি করা সহজ এবং শক্তিশালী একটি পদ্ধতি। আপনি EventsManager এবং কাস্টম ক্লাস ব্যবহার করে রিকোয়েস্টে অথেন্টিকেশন এবং অথরাইজেশন যাচাই করতে পারেন। এতে অ্যাপ্লিকেশনটি আরও নিরাপদ এবং স্কেলেবল হয়ে ওঠে। Middleware এর মাধ্যমে, আপনি বিভিন্ন রিকোয়েস্টের জন্য কাস্টম অথরাইজেশন লজিক প্রয়োগ করতে পারেন, যা আপনার অ্যাপ্লিকেশনকে আরও মডুলার এবং maintainable করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...