Blame view

common/components/rules/CommentRule.php 1.44 KB
b0f143c3   Yarik   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
  <?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;
          }
  
      }