উত্তর:
যেহেতু আপনি ইতিমধ্যে সেই পোস্টটি খুঁজে পেয়েছেন , তাই মন্তব্যগুলিও পড়েছেন তা নিশ্চিত করুন। কোনও ভূমিকার জন্য যাচাই করার জন্য কেন অনুমতি চেক করার পরামর্শ দেওয়া হচ্ছে তা এটি পরিষ্কারভাবে ব্যাখ্যা করে। আপনি যখন অনুমতি ব্যবহার করেন, আপনি সেই অনুমতিটি একাধিক ভূমিকার জন্য নির্ধারণ করতে পারেন যা আপনার সিস্টেমকে আরও নমনীয় করে তোলে। এছাড়াও, মনে রাখবেন যে ভূমিকাগুলির নাম পরিবর্তন করা যেতে পারে, যা আপনার কোডটি ভেঙে দেবে।
এটি বলেছে, আপনি যদি কোনও ভূমিকা পরীক্ষা করতে চান তবে আপনি এটি করতে পারেন:
// Load the currently logged in user.
global $user;
// Check if the user has the 'editor' role.
if (in_array('editor', $user->roles)) {
// do fancy stuff
}
বর্তমান ব্যবহারকারীর একক ভূমিকা বা একাধিক ভূমিকা রয়েছে কিনা তা যাচাই করতে একটি দুর্দান্ত উপায় হ'ল:
//can be used in access callback too
function user_has_role($roles) {
//checks if user has role/roles
return !!count(array_intersect(is_array($roles)? $roles : array($roles), array_values($GLOBALS['user']->roles)));
};
if (user_has_role(array('moderator', 'administrator'))) {
// $user is admin or moderator
} else if(user_has_role('tester')){
// $user is tester
} else{
// $user is not admin and not moderator
}
ড্রুপাল সংস্করণ> = 7.36 এর জন্য আপডেট
আপনি Drupal API https://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_has_rol/7 থেকে ফাংশন ব্যবহারকারী_হাস_রোল ব্যবহার করতে পারেন ।
এই উদাহরণটি ব্যবহার করে দেখুন:
<?php
function MYMODULE_foo() {
$role = user_role_load_by_name('Author');
if (user_has_role($role->rid)) {
// Code if user has 'Author' role...
}
else {
// Code if user doesn't have 'Author' role...
}
$user = user_load(123);
if(user_has_role($role->rid, $user)) {
// Code if user has 'Author' role...
}
else {
// Code if user doesn't have 'Author' role...
}
}
?>
আপনি ডিভেল মডিউলটি ইনস্টল করতে এবং ডিপিএম করতে পারেন ($ ব্যবহারকারী)। এটি ব্যবহারকারীর ভূমিকা সহ সমস্ত ব্যবহারকারীর তথ্য সহ একটি অ্যারে মুদ্রণ করবে।
এই অ্যারে থেকে আপনি "ভূমিকা" এর অ্যারে অবস্থানটি খুঁজে পেতে এবং ব্যবহারকারীর ভূমিকা খুঁজতে এটি আপনার মডিউলটিতে ব্যবহার করতে পারেন।
ভূমিকা নাম পরিবর্তিত হওয়ার ক্ষেত্রে ভবিষ্যতের প্রতিরোধী হওয়ার জন্য ডাটাবেসে রোল টেবিলের মধ্যে পাওয়া যায় এমন ভূমিকা আইডি (মুক্তি) অনুসন্ধান করা ভাল।
আপনি যদি মুক্তি 16 দিয়ে কোনও ভূমিকা জানতে চান, তা করুন:
// Load the currently logged in user.
global $user;
// Check if the user has the 'editor' role, when 'editor' has role id 16
if (array_key_exists(16, $user->roles)) {
// do fancy stuff
}
গৃহীত উত্তরে সেরা অনুশীলন হিসাবে উল্লেখ করা মন্তব্যটির আসল কোডটি এখানে
<?php
function mymodule_perm() {
return array('access something special');
}
function dosomethingspecial() {
// For current user
if (user_access('access something special')) {
// Doing something special!
}
// For a specific user
if (user_access('access something special', $theuser)) {
// Doing something special!
}
}
?>
আপনি মুদ্রণ_আর ($ ব্যবহারকারী) দ্বারা কোনও ব্যবহারকারীর ভূমিকা পরীক্ষা করতে পারেন এবং আউটপুটে আপনি এর মতো কিছু পাবেন
stdClass অবজেক্ট ( [uid] => 0 [হোস্টনাম] => :: ১ [ভূমিকা] => অ্যারে ( [1] => বেনামী ব্যবহারকারী // বর্তমান ব্যবহারকারীর ভূমিকা আমার বেনামে আপনার ক্ষেত্রে এটি ভিন্ন হতে পারে )