مدیریت سطح دسترسی بر اساس role_id در Yii

مدیریت سطح دسترسی بر اساس role_id در Yii

namespace common\components;

namespace common\components;

class AccessRule extends \yii\filters\AccessRule {

/**
* @inheritdoc
*/
protected function matchRole($user)
{
if (empty($this->roles)) {
return true;
}
foreach ($this->roles as $role) {
if ($role === '?') {
if ($user->getIsGuest()) {
return true;
}
} elseif ($role === '@') {
if (!$user->getIsGuest()) {
return true;
}
// Check if the user is logged in, and the roles match
} elseif (!$user->getIsGuest() && $role === $user->identity->role) {
return true;
}
}

return false;
}
}

در controller

public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
// We will override the default rule config with the new AccessRule class
'ruleConfig' => [
'class' => AccessRule::className(),
],
'rules' => [
[
'actions' => [

'index',
'view',
'create',
'update',
'delete',

],
'allow' => true,
// Allow users, moderators and admins to create
'roles' => [
User::ROLE_ADMIN,

],
],

],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['POST'],
],
],
];
}

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *