DeleteRule.php
1.46 KB
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
37
<?php
namespace common\components\rules;
use yii\db\Query;
use yii\rbac\Rule;
class DeleteRule extends Rule
{
public $name = 'canDelete';
public function execute ($user, $item, $params)
{
return true;
$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;
}
}