Blame view

common/components/rules/CommentRule.php 1.47 KB
14a09168   Alex Savenko   init 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;

          }

  

      }