ব্যবহারকারী সুপার ব্যবহারকারী কিনা কীভাবে সনাক্ত করবেন?


20

দর্শনার্থী অতিথি কিনা তা নির্ধারণ করার জন্য আমরা এই জাতীয় কিছু ব্যবহার করি:

if ($user->guest) {
echo 'Hello, guest!';
}

এখন, আমি যদি এটি নির্ধারণ করতে চাই যে দর্শনার্থী কোনও নিবন্ধিত সুপার ইউজার (প্রশাসক) কিনা বা না হয় তবে এর জন্য কোডটি কী হবে?

আমার কিছু বাহ্যিক পিএইচপি ফাইল রয়েছে যা আমি আমার জুমলা ওয়েবসাইটের সুপার ইউজার ব্যতীত অন্য কারও দ্বারা অ্যাক্সেসযোগ্য হতে চাই না। জুমলা সিএমএস আমদানি করে কেবল ফাইলগুলি সুরক্ষিত করার চেষ্টা করা হচ্ছে।


1
মজার বিষয় আমার গতরাতে এই দরকার ছিল এবং আমি কোনও সমাধান না পাওয়া পর্যন্ত কেবল গুগল করেছিলাম। আমার ক্ষেত্রে আমি আরএসফায়ালগুলি থেকে আউটপুটকে ওভাররাইড করেছিলাম তাই টুল বারটি কেবল অ্যাডমিনদের জন্য প্রদর্শিত হয়।
ব্রায়ান পিট

1
প্রকৃতপক্ষে $ ব্যবহারকারী-> পান ('isRoot') যা গ্রহণযোগ্য উত্তরে রয়েছে, ব্যবহার করা উচিত নয়। সম্ভবত সর্বশেষতম জুমলা সংস্করণগুলিতে (3.6 এবং তারপরে) এটি JUser এর বাইরে যেমন বলা হবে না :: অনুমোদন ()। পরিবর্তে দেব-মি এর উত্তরের মতো $ ব্যবহারকারীর> অনুমোদন ('এখানে আপনার প্যারাম') ব্যবহার করুন।
এফফ্রেইন

উত্তর:


28

এই কোডগুলি নির্ধারিত করবে যে বর্তমান লগ ইন করা ব্যবহারকারী সুপার ব্যবহারকারী কিনা -

$user = JFactory::getUser();
$isroot = $user->authorise('core.admin');

এই কোডটি বৈশ্বিক কনফিগারেশনে "সুপার ব্যবহারকারী" অনুমতিতে কী ম্যাপ করা হয়েছে তা যাচাই করবে এবং কেবল উপাদান স্তরের ক্ষেত্রে নয়। এটি অন্যান্য উপায়ে তুলনা করে নিজেই পরীক্ষা করে দেখুন।


2
এই উত্তরের ব্যাখ্যাটি কিছুটা দুর্বল, তবে আমি মনে করি core.adminযে এটির চেয়ে ভাল পরীক্ষা করা core.edit
ব্রিলিল্যান্ড

1
আমি একমত নই কোর.এডমিন হ'ল গ্লোবাল কনফিগারেশনে অ্যাক্সেস নিয়ন্ত্রণ করতে অনুমতি ব্যবহার করা হয়, সুতরাং কোনও ব্যবহারকারী সুপার অ্যাডমিন কিনা তা যাচাই করার উপযুক্ত উপায়। আপনি যদি গ্রুপটি 8 এর জন্য স্বীকৃত উত্তরের মতো পরীক্ষা করেন তবে জুমলা! সুরক্ষার স্বার্থে এটি এলোমেলো করার সিদ্ধান্ত নেয়, আপনার স্ক্রিপ্টটি ভেঙে যাবে। সবসময় মনে পরিবর্তন সঙ্গে কোড। যদি না আপনি কখনই আপগ্রেড করার উদ্দেশ্যে না থাকেন।
ম্যাথিউ লেনিং

এটি স্পষ্টতই একটি সুপার ইউজার চেকের জন্য সেরা মিল। এটি ব্যর্থতা এবং সুপার ইউজারের অনুমতি উভয়ের জন্য যাচাই করবে। github.com/joomla/joomla-cms/blob/stasing/libraries/joomla/user/… অন্য বিকল্পটি হ'ল ইউজার- > গেট ('isRoot') যা ধরে নিচ্ছে যে অনুমোদিতটি ইতিমধ্যে isRoot অবস্থা পপুলেট করার জন্য ব্যবহৃত হয়েছে। এটি সুরক্ষিত সম্পত্তি হিসাবে আইসআরট সরাসরি ব্যবহার করা যেতে পারে। github.com/joomla/joomla-cms/blob/stasing/ad प्रशासক/…
পিটার ওয়াইজম্যান

কেবল এই কোডটি সঠিক কিনা তা নিয়ে কোনও সন্দেহ দূর করতে: এই কোডটি জুমলার মূল (জুমলা ৩.৩.১) ব্যবহার করে ব্যবহারকারী সুপার অ্যাডমিন কিনা তা যাচাই করতে ব্যবহৃত হয়। আপনি এটি libraries/joomla/user/user.phpফাইলের 747 লাইনে খুঁজে পেতে পারেন । এটি হ'ল:$iAmSuperAdmin = $my->authorise('core.admin');
আইটোকটপাস

8

"সুপার ব্যবহারকারী" স্থিতি নির্ধারণ করতে আপনাকে যাচাই করতে হবে $user->isRoot। এই সম্পত্তিটি প্রথম অনুমোদনযোগ্য চেক হয়ে যাওয়ার পরে সেট হয়ে যায় এবং ব্যবহারকারীকে সুপার অ্যাডমিন বলে সনাক্ত করা হয়।

তবে সাধারণত আপনি আরও ভালভাবে যাচাই করতে চান যে ব্যবহারকারীর অন্যান্য উত্তরগুলিতে বর্ণিত মত কিছু অনুমতি রয়েছে কিনা।


3
এটি ধরে নিয়েছে $ ব্যবহারকারী-> অনুমোদন () ইতিমধ্যে ইসরूट বৈশিষ্ট্যটি জনপ্রিয় করার জন্য অন্য কোনও কিছু দ্বারা ডাকা হয়েছে। এছাড়াও লক্ষ করুন যে isRoot সম্পত্তি সুরক্ষিত তাই $ ব্যবহারকারী-> get ('isRoot') এর মাধ্যমে অ্যাক্সেস হওয়া দরকার।
পিটার ওয়াইজম্যান

6

এটা চেষ্টা কর,

$user  = JFactory::getUser();

$user_groups = $user->groups;

print_r($user_groups);

এটি একটি অ্যারে ফিরিয়ে আনবে, ডিফল্টরূপে জুমলা অ্যাডমিন ব্যবহারকারীদের সুপার অ্যাডমিন (গ্রুপ 8) এবং প্রশাসক (গ্রুপ 7)।

অ্যারেতে এই মানগুলির কোনও আছে কিনা তা পরীক্ষা করতে পারেন তবে এটি অ্যাডমিন ব্যবহারকারী হওয়া উচিত, আপনি যদি কাস্টম ব্যবহারকারী গ্রুপ তৈরি করেন তবে আপনাকে পরীক্ষা করতে হবে #__usergroups parent Id হবে।

আশা করি এটা সাহায্য করবে..


6

যে কোনও নির্দিষ্ট গ্রুপে নেই তাকে অস্বীকার করার জন্য আপনি শর্তটি ব্যবহার করতে পারেন।

$user = JFactory::getUser();
$groups = $user->groups;

if (in_array(8, $groups)):

 //only enter if the user is in the group 8 (group 8 = Super-Administrator)

endif;

1
ম্যাজিক নম্বর কোনও দুর্দান্ত সমাধান নয়। আপনি যে কোনও গোষ্ঠীকে সুপার প্রশাসনের অনুমতি দিতে পারেন এবং / অথবা ডিফল্ট সুপার অ্যাডমিন গ্রুপ মুছতে পারেন।
ডেভিড হেইস

আমি এর মতো কিছু ব্যবহার করেছি if(in_array(8, $user->groups))এবং এটি আমার পক্ষে কাজ করেছে
Linga

4

লগইন ব্যবহারকারী সুপার অ্যাডমিন বা অন্যান্য ব্যবহারকারী কিনা তা পরীক্ষা করার জন্য কোডের নীচে চেষ্টা করুন ...

$user = JFactory::getUser();
$isAdmin = $user->get('isRoot');
if ($isAdmin) {
echo 'You are an Administrator';
}
else  {
echo 'You are not Administrator';
}

OR

function isSuperAdmin()
{
  $user = JFactory::getUser();
  return $user->get('isRoot');
}    

if (isSuperAdmin()) 
{
  echo 'You are an Administrator';
}
else  {
  echo 'You are not Administrator';
}

1
প্রকৃতপক্ষে $ ব্যবহারকারী-> পান ('isRoot') ব্যবহার করা উচিত নয়। সম্ভবত সর্বশেষতম জুমলা সংস্করণগুলিতে (3.6 এবং তারপরে) এটি JUser এর বাইরে যেমন বলা হবে না :: অনুমোদন ()। পরিবর্তে দেব-মি এর উত্তরের মতো $ ব্যবহারকারীর> অনুমোদন ('এখানে আপনার প্যারাম') ব্যবহার করুন।
এফফ্রেইন

আমি প্রথমে এটি পরীক্ষা করব, নির্দেশ করার জন্য ধন্যবাদ। :)
সাইব্বিওয়েব

1
$user->get('isRoot');J3.6.2 এর জন্য কাজ করছে না।
সাইব্বিওয়েব

2

জুমলা @ সেন্স ৩.২, ফিল্ডের ইউগ্রুপলিস্ট এটি পরীক্ষা করতে ব্যবহার করে:

$isSuperUser = JFactory::getUser()->authorise('core.admin');

এই উত্তরটি খুব অনুরূপ @ দেব-M এর উত্তর
ফারহমান্দ

@ ফারাহমান্ড আপনি ঠিক বলেছেন, আমি জুমলা পছন্দসই পদ্ধতিটি কী তা নিশ্চিত করার জন্য কেবল যোগ করেছি এবং এটি এখনও জুমলা সংস্করণ 3+ এর জন্য বৈধ আছে
পেড্রো বিচুডো মাসচিও

ঠিক আছে. যাইহোক, প্রশ্নটি ইতিমধ্যে জুমলা -৩.x এর সাথে ট্যাগ করা হয়েছে ।
ফারহমান্দ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.