লারাভেল (Laravel) ফ্রেমওয়ার্কে অথোরাইজেশন (Authorization) হলো এমন একটি প্রক্রিয়া, যা ব্যবহারকারীকে নির্দিষ্ট কার্যকলাপ বা সম্পদ অ্যাক্সেসের অনুমতি প্রদান করে। সাধারণত, অথোরাইজেশন ব্যবস্থায় ব্যবহারকারীকে অ্যাপ্লিকেশনের বিভিন্ন অংশ বা ফিচার এক্সেস করার জন্য নির্দিষ্ট অনুমতি বা রোল দেওয়া হয়। লারাভেলে অথোরাইজেশন ব্যবস্থা খুবই শক্তিশালী এবং সহজ।
অথোরাইজেশন কি?
অথোরাইজেশন (Authorization) হল প্রক্রিয়া যার মাধ্যমে নির্ধারণ করা হয় একজন ব্যবহারকারী কোন অ্যাকশন করতে পারবেন এবং কোনটা করতে পারবেন না। এটি সাধারণত এক্সেস কন্ট্রোল (Access Control) এর মাধ্যমে পরিচালিত হয়, যেখানে নির্দিষ্ট কার্যক্রমের জন্য বিশেষ অনুমতি বা অধিকার প্রদান করা হয়।
লারাভেল অথোরাইজেশন পদ্ধতি
লারাভেলে দুটি প্রধান অথোরাইজেশন পদ্ধতি রয়েছে:
- পলিসি (Policy)
- গেট (Gate)
এই দুটি পদ্ধতির মাধ্যমে আপনি বিভিন্ন ব্যবহারকারীকে নির্দিষ্ট কাজের অনুমতি দিতে পারেন।
গেট (Gate)
গেট (Gate) হল লারাভেলের একটি সহজ অথোরাইজেশন সিস্টেম, যা নির্দিষ্ট অনুমতি পরীক্ষা করতে ব্যবহৃত হয়। এটি সাধারণত সরাসরি রাউট কন্ট্রোলারে ব্যবহৃত হয় এবং কোন ব্যবহারকারী কোনো নির্দিষ্ট অ্যাকশন করতে পারবে কিনা তা পরীক্ষা করে।
গেট তৈরি করা
গেট তৈরি করতে আপনাকে AuthServiceProvider ফাইলে Gate::define() ফাংশন ব্যবহার করতে হয়। উদাহরণস্বরূপ, একটি গেট তৈরি করা যেটি চেক করবে ব্যবহারকারী পোষ্ট ডিলিট করতে পারবে কিনা:
// app/Providers/AuthServiceProvider.php
use Illuminate\Support\Facades\Gate;
public function boot()
{
$this->registerPolicies();
Gate::define('delete-post', function ($user, $post) {
return $user->id === $post->user_id;
});
}
এখানে delete-post নামক গেটটি তৈরি করা হয়েছে, যা চেক করবে, পোষ্টের মালিক যদি ব্যবহারকারী হয় তবে সে পোষ্টটি ডিলিট করতে পারবে।
গেট ব্যবহার করা
গেটটি ব্যবহার করার জন্য Gate::allows() অথবা Gate::denies() ফাংশন ব্যবহার করা হয়। উদাহরণ:
if (Gate::allows('delete-post', $post)) {
// ব্যবহারকারী পোষ্ট ডিলিট করতে পারবে
} else {
// অনুমতি নেই
}
পলিসি (Policy)
পলিসি (Policy) হল আরো গঠনমূলক একটি অথোরাইজেশন পদ্ধতি, যা মডেল-ভিত্তিক অনুমতি পরীক্ষা করতে ব্যবহৃত হয়। এটি সাধারণত সেই কাজগুলোতে ব্যবহৃত হয় যেখানে একাধিক গেটের মাধ্যমে একই ধরনের অথোরাইজেশন ফাংশনালিটি পরিচালনা করা হয়।
পলিসি তৈরি করা
পলিসি তৈরি করতে artisan কমান্ড ব্যবহার করা হয়:
php artisan make:policy PostPolicy
এরপর PostPolicy ক্লাসে বিভিন্ন পদ্ধতি তৈরি করতে হবে। উদাহরণস্বরূপ, একটি delete পদ্ধতি যা চেক করবে, ব্যবহারকারী পোষ্টটি ডিলিট করতে পারবে কিনা:
// app/Policies/PostPolicy.php
public function delete(User $user, Post $post)
{
return $user->id === $post->user_id;
}
পলিসি রেজিস্টার করা
পলিসি রেজিস্টার করতে AuthServiceProvider ফাইলে পলিসি মেপিং যুক্ত করতে হয়:
// app/Providers/AuthServiceProvider.php
protected $policies = [
Post::class => PostPolicy::class,
];
পলিসি ব্যবহার করা
পলিসি ব্যবহার করতে authorize() ফাংশন ব্যবহার করা হয়। উদাহরণ:
public function destroy(Post $post)
{
$this->authorize('delete', $post);
// পোষ্ট ডিলিট করার কোড
}
এখানে authorize() ফাংশন পলিসি পদ্ধতি delete কল করবে এবং এটি চেক করবে ব্যবহারকারী পোষ্ট ডিলিট করার অনুমতি পায় কিনা।
অথোরাইজেশন চেকের মধ্যে রোল ভিত্তিক (Role-Based) অ্যাক্সেস
লারাভেলে রোল ভিত্তিক অথোরাইজেশনও খুব সহজভাবে কনফিগার করা যায়। আপনি মডেল-ভিত্তিক রোল ব্যবহার করে প্রতিটি ব্যবহারকারীর জন্য নির্দিষ্ট রোল বা পারমিশন সেট করতে পারেন। এর মাধ্যমে ব্যবহারকারীদের বিভিন্ন কাজের জন্য বিভিন্ন রোল বা পারমিশন দেওয়া যায়।
লারাভেল অথোরাইজেশন ব্যবস্থার মাধ্যমে আপনার অ্যাপ্লিকেশনে সঠিক নিরাপত্তা এবং অ্যাক্সেস কন্ট্রোল নিশ্চিত করা সম্ভব। গেট ও পলিসি ব্যবহার করে আপনি সহজেই ব্যবহারকারীদের নির্দিষ্ট কাজের জন্য অনুমতি বা বাধা প্রদান করতে পারবেন।
Read more