CommentRule.php
1.44 KB
<?php
namespace common\components\rules;
use yii\db\Query;
use yii\rbac\Rule;
class CommentRule extends Rule
{
public $name = 'canComment';
public function execute ($user, $item, $params)
{
$auth = \Yii::$app->authManager;
$access = false;
if($params['record']) {
$roles = \Yii::$app->user->identity->getRoles();
$permissions = [];
$queryRole = (new Query())->from('auth_table_access_group')->where(['in', 'role', $roles])->andWhere(['record_id' => $params['record']->primaryKey])->all();
$queryUser = (new Query())->from('auth_table_access_user')->where(['user_id' => $user])->andWhere(['record_id' => $params['record']->primaryKey])->all();
foreach($queryRole as $oneRole)
{
$permissions[] = $oneRole['permission'];
$permissions = array_merge($permissions, array_keys($auth->getPermissionsByRole($oneRole['permission'])));
}
foreach($queryUser as $oneUser)
{
$permissions[] = $oneUser['permission'];
$permissions = array_merge($permissions, array_keys($auth->getPermissionsByRole($oneUser['permission'])));
}
$access = in_array($item->name, array_unique($permissions));
}
return $access;
}
}