আজ, অনেক ওয়েব অ্যাপ্লিকেশান এমন পৃষ্ঠাগুলি দেখাবে যেগুলি সর্বজনীনভাবে উপলব্ধ — যেমন একটি হোমপেজ — এবং আরও নিরাপদ যেখানে একজন ব্যবহারকারীকে অ্যাক্সেস পেতে লগ ইন করতে হবে৷ ব্যবহারকারীর নিবন্ধন, লগ ইন, এবং ব্যবহারকারীর সেশনের অবস্থা ট্র্যাক করার প্রক্রিয়াটিকে "প্রমাণিকরণ" বলা হয়।
একই সময়ে, লগ-ইন করা ব্যবহারকারীদের সাথে কাজ করার সময়, তাদের ব্যবহারকারীর ভূমিকার উপর নির্ভর করে তাদের জন্য উপলব্ধ ক্রিয়া এবং সংস্থানগুলিকে আলাদা করা প্রয়োজন৷ উদাহরণস্বরূপ, "অ্যাডমিনদের" সাধারণত সাধারণ ব্যবহারকারীদের চেয়ে বেশি অ্যাক্সেস থাকে। প্রমাণীকৃত ব্যবহারকারীর অ্যাক্সেস আলাদা করার এই প্রক্রিয়াটিকে "অনুমোদন" বলা হয়।
এই পোস্টে, আমরা এখন পর্যন্ত রুবির সবচেয়ে জনপ্রিয় দুটি অনুমোদনের লাইব্রেরি অন্বেষণ করব:Pundit এবং CanCanCan।
আসুন ডুব দেওয়া যাক!
সেটআপ এবং পূর্বশর্ত
এই নিবন্ধে, আমরা ব্যবহারকারী এবং পোস্ট সমন্বিত একটি সাধারণ Rails 7 অ্যাপ ব্যবহার করব। ব্যবহারকারীদের একটি "সম্পাদক" বা "লেখক" ভূমিকা বরাদ্দ করা হবে। অনুমোদন কীভাবে কাজ করে তা দেখানোর জন্য এই ধরনের দৃশ্যটি উপযুক্ত৷
আমাদের উদাহরণ অ্যাপের জন্য কোড রিপোজ দেখুন:
- পন্ডিত
- CanCan
যদিও এই নিবন্ধটি অনুমোদনের উপর দৃষ্টি নিবদ্ধ করে, প্রমাণীকরণের সহচর বিষয়কে উপেক্ষা করা যাবে না।
আমরা প্রমাণীকরণ সেট আপ করার বিশদ বিবরণে প্রবেশ করব না কারণ এটি এই পোস্টের সুযোগের বাইরে। আপনি Devise রত্ন ডকুমেন্টেশনে ইনস্টলেশন নির্দেশাবলী অনুসরণ করতে পারেন (আমরা আমাদের অনুমোদন রত্নগুলির সাথে Devise যুক্ত করব)।
আরও একটি জিনিস — আপনি পন্ডিত বা CanCanCan এর সাথে মোকাবিলা করুন না কেন, আপনার অ্যাপের ব্যবহারকারীর ভূমিকা সংজ্ঞায়িত করার আসল কাজটি স্বয়ংক্রিয়ভাবে ঘটবে না যখন আপনি অনুমোদনের রত্নগুলির মধ্যে একটি ইনস্টল করেন। আপনাকে এটি ম্যানুয়ালি সেট আপ করতে হবে৷
এটা করা যাক।
ব্যবহারকারীর ভূমিকা সংজ্ঞায়িত করা
ধরা যাক আপনি ইতিমধ্যেই ডিভাইস জহর ইনস্টল করেছেন এবং একটি ব্যবহারকারী মডেল সেট আপ করেছেন। পরবর্তী ধাপ হল অ্যাপের ব্যবহারকারীদের কী ভূমিকা থাকবে তা নির্ধারণ করা। আমাদের ক্ষেত্রে, আমরা নিম্নলিখিত ভূমিকাগুলি নির্ধারণ করব:
- লেখক - এই ব্যবহারকারীর ভূমিকা তৈরি করতে সক্ষম হবে৷ , সম্পাদনা , আপডেট , এবং মুছুন তাদের নিজস্ব পোস্ট। একই সময়ে, একজন লেখকও দেখতে পারেন৷ অন্যান্য লেখকদের পোস্ট।
- সম্পাদক - সম্পাদকের ভূমিকা সহ একজন ব্যবহারকারী সম্পাদনা করতে পারেন৷ , আপডেট , দেখুন , এবং মুছুন কোনো ব্যবহারকারীর পোস্ট, কিন্তু তারা তৈরি করতে পারে না তাদের নিজস্ব পোস্ট।
একজন ব্যবহারকারীর ভূমিকা সংরক্ষণ করতে একটি কলাম যুক্ত করুন (ব্যবহারকারীর সারণী সংশোধন করতে একটি মাইগ্রেশন ব্যবহার করে):
তারপর মাইগ্রেশন চালান:
এবং তারপরে আমরা এইমাত্র সংজ্ঞায়িত ভূমিকাগুলি অন্তর্ভুক্ত করতে ব্যবহারকারী মডেলটিকে সংশোধন করুন:
যখন আমরা এটি করছি, চলুন এগিয়ে যাই এবং একটি Post সেট আপ করি title এর বৈশিষ্ট্য সহ মডেল এবং body , সেইসাথে পোস্টটি লেখেন এমন ব্যবহারকারীর একটি রেফারেন্স:
আমরা বিদেশী কী user_id যোগ করি Post-এ একটি নির্দিষ্ট ব্যবহারকারীর সাথে তৈরি করা প্রতিটি পোস্ট সংযুক্ত করার মডেল। যেহেতু আমরা ইতিমধ্যেই ডিভাইস ব্যবহার করে ব্যবহারকারীর প্রমাণীকরণ সেট আপ করেছি, তাই আমরা সহজভাবে Posts-এর তৈরি পদ্ধতি পরিবর্তন করতে পারি। স্বয়ংক্রিয়ভাবে user_id সেট করতে কন্ট্রোলার বর্তমানে লগ ইন করা ব্যবহারকারীর কাছে:
এটি Post-এর সাথে যুক্ত কিনা তা নিশ্চিত করতে আমরা ব্যবহারকারী মডেলটিকেও সংশোধন করতে পারি মডেল:
পরিশেষে, আসুন কিছু ব্যবহারকারীর সাথে ডাটাবেস তৈরি করা যাক, প্রত্যেকের আলাদা ভূমিকা রয়েছে:
তারপর ডাটাবেস বীজ করুন:
এখন পর্যন্ত, আমাদের অ্যাপে এখন রয়েছে:
- ডিভাইস ব্যবহার করে প্রমাণীকরণ সেট আপ।
- "লেখক" এবং "সম্পাদক" এর দুটি সংজ্ঞায়িত ব্যবহারকারীর ভূমিকা।
- A
Postমডেল।
এর সাথে, আমাদের কাছে এখন পন্ডিতের সাথে সঠিকভাবে কাজ করার জন্য যা যা দরকার তা রয়েছে৷
পন্ডিতের সাথে আপনার রুবি অ্যাপে অনুমোদন
পন্ডিত একটি অনুমোদন লাইব্রেরি যা অবজেক্ট-ওরিয়েন্টেড আর্কিটেকচার এবং প্লেইন রুবি ক্লাসের চারপাশে নির্মিত। এটি আপনাকে একটি কঠিন অনুমোদন স্তর তৈরি করার জন্য সরঞ্জাম দেয় যা আপনার অ্যাপের সাথে স্কেল করতে পারে।
আপনার রুবি অ্যাপে পন্ডিত ইনস্টল করা হচ্ছে
আপনার অ্যাপের জেমফাইলে রত্নটি যুক্ত করুন:
তারপর টার্মিনালে, কমান্ডটি চালান:
বিকল্পভাবে, নিম্নলিখিত কমান্ডটি চালান:
যেহেতু অনুমোদন বেশিরভাগ ক্ষেত্রে নিয়ন্ত্রক সংস্থানগুলিতে অ্যাক্সেস মঞ্জুর করা বা অস্বীকার করার সাথে সম্পর্কিত, তাই পরবর্তী পদক্ষেপটি হল অ্যাপ্লিকেশন কন্ট্রোলারে পন্ডিতের অনুমোদন মডিউল যুক্ত করা:
এবং অবশেষে, একটি বেস পলিসি ক্লাস তৈরি করুন অন্যান্য সমস্ত পলিসি এর থেকে উত্তরাধিকারসূত্রে প্রাপ্ত হবে:
যা আপনাকে নিম্নলিখিত বেস পলিসি ক্লাস দেয়:
সেই সঙ্গে, পণ্ডিত এখন ঠিকঠাক সেট আপ এবং যেতে প্রস্তুত. উপরন্তু, আমরা প্রমাণীকরণ এবং ব্যবহারকারীর ভূমিকা সেট আপ করেছি।
এর পরে, আসুন নিয়মগুলি প্রয়োগ করতে নীতিগুলি ব্যবহার করি যা নির্ধারণ করে যে প্রতিটি ব্যবহারকারীর ভূমিকা কীভাবে Post অ্যাক্সেস করবে সম্পদ।
পন্ডিত নীতি কনফিগার করা
পন্ডিত লিঙ্গোতে, একটি "নীতি" হল একটি সাধারণ রুবি ক্লাস যেখানে আপনি ব্যবহারকারীর ভূমিকা কীভাবে বিভিন্ন সংস্থানের সাথে ইন্টারঅ্যাক্ট করে তার সমস্ত নিয়ম সংজ্ঞায়িত করেন৷
এই নীতিগুলি কিছু উল্লেখযোগ্য বৈশিষ্ট্য সহ আসে:
- প্রতিটি নীতির নাম "নীতি" শব্দের সাথে প্রত্যয় যুক্ত একটি বিদ্যমান মডেলের নামানুসারে রাখা হয়েছে। উদাহরণস্বরূপ,
Postকিভাবে সংজ্ঞায়িত করে একটি নীতি মডেল অ্যাক্সেস করা হয় বলা হয়PostPolicy. - একটি
attr_reader:এর জন্য দুটি আর্গুমেন্ট লাগে - প্রথমটি হল একটিuser, বিশেষ করে, বর্তমানে লগ-ইন করা ব্যবহারকারী —current_user— এবং দ্বিতীয় যুক্তি হল সেই মডেল যেটির জন্য আপনি অনুমোদনের নিয়ম সংজ্ঞায়িত করতে চান, আমাদের ক্ষেত্রে,post. - কোয়েরি পদ্ধতি যা সংস্থানগুলির নিয়ামক পদ্ধতিতে ম্যাপ করবে যেগুলির অনুমোদনের নিয়মগুলি সেট আপ করা আছে৷ সাংগঠনিক উদ্দেশ্যে,
app/policiesএর অধীনে সমস্ত নীতি থাকা ভাল ফোল্ডার।
যেহেতু আমরা জানি আমাদের অ্যাপে বিভিন্ন ব্যবহারকারীর ভূমিকার জন্য আমাদের কী অ্যাক্সেসের নিয়মগুলি নির্ধারণ করতে হবে, আসুন লেখকের ভূমিকা দিয়ে শুরু করা যাক৷
একটি ভূমিকার জন্য একটি পন্ডিত নীতি সংজ্ঞায়িত করা
এটি কীভাবে করা যায় তা দেখতে লেখকের ভূমিকাটি ব্যবহার করা যাক। শুরুতে, আমরা Post-এ লেখকের ভূমিকার অ্যাক্সেসের রূপরেখা দিতে পারি নিম্নরূপ সম্পদ:
- তৈরি করুন৷ তাদের নিজস্ব পোস্ট
- সম্পাদনা এবং আপডেট করুন তাদের নিজস্ব পোস্ট
- দেখুন (বা পড়ুন)৷ তাদের নিজস্ব পোস্টের পাশাপাশি অন্যান্য ব্যবহারকারীর পোস্ট
- মুছুন৷ তাদের নিজস্ব পোস্ট
এটি মাথায় রেখে, পোস্টগুলি কীভাবে অ্যাক্সেস করা হয় তা নিয়ন্ত্রণ করতে এগিয়ে যান এবং একটি নতুন নীতি তৈরি করুন:
এটি আমাদের নিম্নলিখিত জেনেরিক পলিসি ক্লাস দেয় যা আমরা আগে তৈরি করা বেস পলিসি থেকে উত্তরাধিকার সূত্রে প্রাপ্ত:
আসুন এখন সেই অনুযায়ী লেখকের ভূমিকার জন্য অ্যাক্সেসের নিয়মগুলি যুক্ত করি (এগুলি বেস পলিসি ক্লাস থেকে উত্তরাধিকারসূত্রে পাওয়া যে কোনও নিয়মকে ওভাররাইড করে):
এখানে, আমরা সংজ্ঞায়িত করি যে পোস্টের কন্ট্রোলারের সাথে সম্পর্কিত ক্রিয়াগুলি পোস্ট তৈরি, সম্পাদনা, আপডেট এবং মুছে ফেলার সময় একজন লেখক কী করতে পারেন৷ আপনি যদি লক্ষ্য করেন, এই নিয়মগুলি সাধারণভাবে পোস্টগুলির ক্ষেত্রে প্রযোজ্য এবং অগত্যা একজন লেখকের নিজস্ব পোস্টগুলিতে প্রযোজ্য নয় (আমরা স্কোপের বিভাগে এটি পেতে পারি)৷
আপাতত, আসুন দেখি কিভাবে আমরা এই নীতিটি ব্যবহার করতে পারি।
পন্ডিতে একটি নীতি ব্যবহার করা
একটি নীতি ব্যবহার করতে, Pundit এর authorize কল করুন নিয়ামকের পদ্ধতিতে পদ্ধতি যেখানে আপনি অ্যাক্সেসের নিয়মগুলি পরীক্ষা করতে চান। আপনি প্রাসঙ্গিক পলিসি ক্লাস ইনস্ট্যান্টিয়েট করেন এবং আরও নির্দিষ্টভাবে, যেখানে authorize এর উপর ভিত্তি করে বলা উচিত পদ্ধতি বলা হয়েছে।
উদাহরণস্বরূপ, আসুন authorize কল করি পোস্ট কন্ট্রোলারের তৈরি করুন-এ পদ্ধতি:
এটি পরীক্ষা করতে, সম্পাদক হিসাবে লগ ইন করুন এবং create করার চেষ্টা করুন৷ একটি পোস্ট এটি করার ফলে নিম্নলিখিত ত্রুটি হবে:

যদিও এটি আমরা যা চাই তাই করে, এই ধরনের একটি ত্রুটি পৃষ্ঠা দেখানো ব্যবহারকারীর অভিজ্ঞতার জন্য ভাল নয়। পরবর্তী বিভাগে, আপনি কীভাবে NotAuthorizedError উদ্ধার করবেন তা শিখবেন এবং আরও ব্যবহারকারী-বান্ধব কিছু পরিবেশন করুন।
পন্ডিতের NotAuthorizedError থেকে উদ্ধার
প্রথমে, আমাদের ApplicationController সম্পাদনা করতে হবে নিম্নরূপ:
এখানে, আমরা মূলত পন্ডিতকে user_not_authorized ব্যবহার করতে বলছি পদ্ধতি যখনই NotAuthorizedError উত্থাপিত হয় এটি কেবল অননুমোদিত ব্যবহারকারীকে একটি নির্দিষ্ট পৃষ্ঠায় পুনঃনির্দেশ করবে এবং কী ঘটেছে তা ব্যাখ্যা করে একটি প্রাসঙ্গিক ফ্ল্যাশ বার্তাও প্রদান করবে:

আমাদের কাছে এখন একটি সাধারণ অনুমোদন ব্যবস্থা রয়েছে যা খুব সাধারণীকৃত অনুমতির ক্ষেত্রে পরিচালনা করতে সক্ষম৷
কিন্তু আমরা যদি আরও সূক্ষ্ম-দানা অনুমতি চাই? এর জন্য, আমাদের পন্ডিতের সুযোগগুলি ব্যবহার করতে হবে।
পন্ডিতের সুযোগ
পন্ডিত স্কোপগুলি ActiveRecord স্কোপের অনুরূপ। পরবর্তীতে, আপনি নির্দিষ্ট মানদণ্ড অনুযায়ী রেকর্ড আনতে স্কোপ ব্যবহার করতে পারেন। যাইহোক, পন্ডিতের সুযোগ-সুবিধা সহ, আপনি আপনার সেট করা নির্দিষ্ট নিয়ম অনুসারে নির্দিষ্ট সংস্থানগুলিতে অ্যাক্সেস পরিচালনা করেন।
ধরা যাক আমরা চাই যে সম্পাদকরা "খসড়া" স্থিতিতে থাকা পোস্টগুলি দেখতে এবং সম্পাদনা করতে সক্ষম হন এবং একই সময়ে, লেখকদের শুধুমাত্র তাদের নিজস্ব পোস্টগুলি তৈরি করতে, দেখতে, সম্পাদনা করতে, আপডেট করতে এবং মুছে ফেলার অনুমতি দিন৷
আমরা এইরকম দেখতে পোস্ট নীতি সম্পাদনা করে শুরু করতে পারি:
তারপর আমরা পোস্ট কন্ট্রোলারে রিসোর্সে অ্যাক্সেস অনুমোদন করব, যেমন:
অবশ্যই, পন্ডিতের সাথে স্কোপিং আমাদের দেখানোর চেয়ে অনেক গভীরে যেতে পারে, তবে আমরা এই পোস্টে এটি ছেড়ে দেব। আপনি যদি চান, আপনি কীভাবে আরও উন্নত উপায়ে স্কোপগুলি ব্যবহার করতে পারেন তা দেখতে পন্ডিত ডকুমেন্টেশন দেখুন৷
আপাতত, চলুন জেনে নেওয়া যাক কিভাবে আপনি রেলের শক্তিশালী প্যারামিটারের সাহায্যে লাইব্রেরি ব্যবহার করতে পারেন।
রেলের শক্তিশালী প্যারামিটার সহ পন্ডিত ব্যবহার করা
রেলের শক্তিশালী প্যারামিটারের সাথে পন্ডিতের অনুমোদনের নিয়মগুলিকে একত্রিত করে, আপনি সম্পদের বৈশিষ্ট্যগুলিতে লকডাউন অ্যাক্সেস অর্জন করতে পারেন। ধরা যাক আপনি সম্পাদকদের চান৷ শুধুমাত্র Post-এর একটি উদ্ধৃতাংশ ক্ষেত্রে অ্যাক্সেস সহ মডেল আপনি কিভাবে এটি সম্পর্কে যেতে হবে?
প্রথমে, প্রাসঙ্গিক নীতিতে একটি উপযুক্ত-নামযুক্ত ব্লক যোগ করুন:
তারপর, কন্ট্রোলারে অনুমোদিত প্যারামস ব্লক পরিবর্তন করুন:
এটি দিয়ে, আপনি উদ্ধৃতি তৈরি করেছেন বৈশিষ্ট্য শুধুমাত্র সম্পাদকদের জন্য উপলব্ধ।
আমরা এখন অন্য অনুমোদন লাইব্রেরি, CanCanCan দেখার জন্য গিয়ারগুলি পরিবর্তন করব৷
আপনার রুবি অ্যাপের জন্য CanCanCan উপস্থাপন করা হচ্ছে
CanCanCan হল একটি অনুমোদন লাইব্রেরি যা একটি "ক্ষমতা" শ্রেণী ব্যবহার করে তা নির্ধারণ করতে কার কাছে একটি Rails অ্যাপে অ্যাক্সেস আছে। একটি অনুমোদন মডিউল এবং বিভিন্ন ভিউ হেল্পার ব্যবহার করে প্রকৃত অ্যাক্সেস নিয়ন্ত্রণ অর্জন করা হয়।
CanCanCan ইনস্টল করা হচ্ছে
নীচের কমান্ড চালানোর মতোই ইনস্টলেশন সহজ:
ঠিক পন্ডিতের মতো, CanCanCan দিয়ে, আপনি "ক্ষমতা" ক্লাস নামক একটি প্লেইন রুবি ক্লাস অবজেক্টের মধ্যে সমস্ত অ্যাক্সেসের নিয়মগুলি সংজ্ঞায়িত করতে পারেন। এর পরের জেনারেটর কমান্ডের সাহায্যে এটি করা যাক:
যা নিচের ক্লাস অবজেক্ট তৈরি করে:
আসুন আমাদের পরবর্তী রেইলস অ্যাপের উদাহরণের জন্য ক্ষমতা শ্রেণি কীভাবে অ্যাক্সেসের নিয়মগুলি সংজ্ঞায়িত করতে পারে সে সম্পর্কে আরও জানুন৷
CanCan সক্ষমতা সংজ্ঞায়িত এবং পরীক্ষা করা
আমরা পন্ডিত উদাহরণের মতো একই ব্যবহারকারীর ভূমিকা ব্যবহার করব:লেখক এবং সম্পাদক৷ একজন লেখক তাদের নিজস্ব পোস্ট তৈরি করতে, সম্পাদনা করতে, আপডেট করতে, ধ্বংস করতে এবং অন্য লেখকদের পোস্ট দেখতে পারেন; একজন সম্পাদক তাদের নিজস্ব একটি পোস্ট তৈরি করা ছাড়া সবকিছু করতে পারেন।
CanCanCan ব্যবহার করতে, প্রথমে এই বিন্যাসটি অনুসরণ করে প্রতিটি ব্যবহারকারী বা ভূমিকা কী অ্যাক্সেস করতে পারে তা নির্ধারণ করুন:
উদাহরণ হিসেবে:
তারপর, কন্ট্রোলারে, একটি নির্দিষ্ট কর্মের জন্য অ্যাক্সেসের নিয়ম বিদ্যমান কিনা তা পরীক্ষা করুন — আমাদের উদাহরণ ব্যবহার করে, edit কর্ম:
এটির সাথে, যদি আমরা অন্য লেখক হিসাবে সম্পাদনা পোস্ট ভিজিট করি, আমরা নীচের ত্রুটিটি পাই:

এবং ঠিক যেমন আমরা পন্ডিতের সাথে করেছি, আসুন এই ত্রুটিটি উদ্ধার করি এবং ব্যবহারকারীকে আরও ভাল ত্রুটি পৃষ্ঠা দেখাই৷
CanCanCan এর "অ্যাক্সেস অস্বীকৃত" ত্রুটিগুলি পরিচালনা করা
যখনই একটি সংস্থান অনুমোদিত নয়, CanCanCan একটি CanCan::AccessDenied উত্থাপন করবে ত্রুটি এই ব্যতিক্রমটি ধরার সবচেয়ে সহজ উপায় হল ApplicationController পরিবর্তন করা নিম্নরূপ:
এটি করা একটি ভাল ব্যবহারকারীর অভিজ্ঞতা তৈরি করে। নীচের স্ক্রিনশটে, অননুমোদিত ব্যবহারকারীকে হোম পেজে পুনঃনির্দেশিত করা হয়েছে এবং একটি প্রাসঙ্গিক ফ্ল্যাশ বার্তা দেখানো হয়েছে:

এমনকি আপনি ব্যবহারকারীকে দেখানো ত্রুটি বার্তাটিও কাস্টমাইজ করতে পারেন:
যদি আপনার অ্যাপটি প্রতিক্রিয়া হিসাবে XML পরিবেশন করে, অথবা আপনি CanCanCan::AccessDenied পরিচালনা করার জন্য আরও গভীরে যেতে চান ব্যতিক্রম, CanCanCan এর ডকুমেন্টেশন দেখুন। আপাতত, আসুন দেখি কিভাবে আমরা CanCanCan-এর বিভিন্ন ক্ষমতাকে একত্রিত করে আরও শক্তিশালী অনুমোদন স্তর তৈরি করতে পারি।
একাধিক CanCanCan ক্ষমতার সমন্বয়
আপনি ক্ষমতা শ্রেণীতে একটি সম্পদের জন্য একাধিক অ্যাক্সেস নিয়ম সংজ্ঞায়িত করতে পারেন। লেখক এবং সম্পাদকের ভূমিকা গ্রহণ করে, উদাহরণস্বরূপ, আমরা এটি করতে পারি:
প্রশ্ন হল, আপনি কেন এটি করতে চান?
CanCanCan দিয়ে, আপনি একটি ক্ষমতা ফাইলে সমস্ত অ্যাক্সেস নিয়ম সংজ্ঞায়িত করতে পারেন। এর সুবিধা এবং অসুবিধা উভয়ই রয়েছে।
আপনার সমস্ত নিয়ম এক জায়গায় থাকা অ্যাক্সেসের নিয়মগুলি পরিচালনা করার জন্য খুব সুবিধাজনক কারণ সমস্ত নিয়ম এক জায়গায় সংজ্ঞায়িত করা হয়েছে৷
যাইহোক, যদি আপনার অ্যাপটি অনেক ব্যবহারকারীর ভূমিকা নিয়ে কাজ করে বা আপনার কাছে একাধিক সংস্থান থাকে যার জন্য অনুমোদনের প্রয়োজন হয়, ক্ষমতার শ্রেণীটি সহজেই পরিচালনা করার জন্য খুব বড় এবং জটিল হয়ে উঠতে পারে। এটি পরিচালনা করার একটি উপায় হল পদ্ধতির সংজ্ঞাগুলি ব্যবহার করার ক্ষমতা শ্রেণিকে পুনর্গঠন করা, যেমন:
CanCanCan-এর আরও অনেক কিছু রয়েছে যা এই নিবন্ধে কার্যকরভাবে কভার করা যেতে পারে। আরও জানতে বিস্তারিত CanCanCan ডকুমেন্টেশন দেখুন।
শেষ করার জন্য, আসুন সংক্ষিপ্তভাবে প্রতিটি লাইব্রেরির বৈশিষ্ট্যগুলিকে স্পর্শ করি এবং কেন আপনি একটিকে অন্যটি বেছে নিতে পারেন তার কারণগুলি দিন৷
ফিচার তুলনা:আপনার রুবি অ্যাপের জন্য পন্ডিত বনাম CanCanCan
- ফাইল সংগঠন - পন্ডিতের মাধ্যমে, আপনি একাধিক নীতি ফাইল জুড়ে সহজেই আপনার অ্যাপের অনুমোদন সংগঠিত করতে পারেন। কিন্তু CanCanCan এর সাথে, অনুমোদনের নিয়মগুলি একটি ক্ষমতা ফাইলে থাকবে। একাধিক ক্ষমতা ফাইলের সাথে কাজ করা এখনও সম্ভব, কিন্তু এটি ডিফল্ট বাস্তবায়ন শৈলী নয়।
- পরীক্ষা - যেহেতু পন্ডিতের একাধিক যোগ্যতা ক্লাসের তুলনায় অনুমতি কোড বেশিরভাগই একটি ক্লাসের মধ্যে থাকবে, তাই ক্যানক্যানের জন্য লেখার পরীক্ষা পন্ডিতের চেয়ে সহজ হতে পারে।
- সহায়ক - উভয় লাইব্রেরি ভিউ লেয়ারে অনুমতি পরীক্ষা করার জন্য বেশ কিছু ভিউ হেল্পার প্রদান করে। CanCanCan আপনাকে
can?দেয় আপনার দৃষ্টিভঙ্গিতে ব্যবহার করার পদ্ধতি, যখন পন্ডিত আপনাকেpolicyএর সাথে তুলনামূলকভাবে একই কার্যকারিতা দেয় সাহায্যকারী। - একীকরণ তৈরি করুন - আমরা নিবন্ধে যে উদাহরণগুলি ব্যবহার করেছি তা থেকে আপনি দেখতে পাচ্ছেন, উভয় লাইব্রেরিই ডিভাইসের সাথে খুব ভালভাবে একত্রিত হয়েছে৷
র্যাপিং আপ
এই নিবন্ধে, আমরা রুবি এবং রেল ইকোসিস্টেমের সবচেয়ে জনপ্রিয় দুটি অনুমোদনের রত্ন দেখেছি:পন্ডিত এবং ক্যানক্যান।
উভয় লাইব্রেরি আপনার Rails অ্যাপে অনুমতিগুলি পরিচালনা করার জন্য বৈশিষ্ট্যগুলির একটি সমৃদ্ধ সেট অফার করে৷ এই কারণে, কোন রত্নটি বেছে নেবেন তা বলা প্রায় অসম্ভব — উভয়ই এমনকি সবচেয়ে জটিল অনুমতি সেটআপগুলি পরিচালনা করতে পারে৷
আমরা আপনাকে আপনার অ্যাপে Pundit এবং CanCanCan ব্যবহার করে দেখতে এবং কোনটি আপনার প্রয়োজনে সবচেয়ে উপযুক্ত তা দেখতে উৎসাহিত করি।
শুভ কোডিং!
পি.এস. আপনি যদি রুবি ম্যাজিক পোস্টগুলি প্রেস থেকে বের হওয়ার সাথে সাথে পড়তে চান তবে আমাদের রুবি ম্যাজিক নিউজলেটারে সাবস্ক্রাইব করুন এবং একটি পোস্ট মিস করবেন না!