public static function addChild($permissions, $role)
33
{
34
/** @var $auth */
35
$auth = Yii::$app->authManager;
36
foreach ($permissions as $value) {
37
/** @var Permission|Role $add */
38
$add = $auth->getPermission($value);
39
// Проверяем, не является добовляемое разрешение родителем?
40
$result = self::detectLoop($role, $add);
41
if (!$result) {
42
$auth->addChild($role, $add);
43
} else {
44
/** @var yii\web\Session $session */
45
$session = Yii::$app->session;
46
$session->setFlash('error', Module::t('module', 'The permission of the "{:parent}" is the parent of the "{:permission}"!', [':parent' => $add->name, ':permission' => $role->name]));
47
}
48
}
49
}
50
51
/**
52
* @param object $parent
53
* @param object $child
54
* @return bool
55
*/
56
protected static function detectLoop($parent, $child)
57
{
58
$auth = Yii::$app->authManager;
59
if ($child->name === $parent->name) {
60
return true;
61
}
62
foreach ($auth->getChildren($child->name) as $grandchild) {