/** * Update inheritance permissions method */ protected function updateInheritancePermissions() { foreach ($this->inheritancePermissions() as $role => $items) { foreach ($items as $item) { $this->authManager->addChild(RbacFactory::Role($role), RbacFactory::Permission($item)); echo sprintf(' > role `%s` inherited permission `%s`.', $role, $item) . PHP_EOL; } } }
/** * Fill relations between roles and permissions */ protected function fillChildren() { foreach ($this->getConfig('children') as $roleName => $permissionsNames) { $role = $this->authManager->getRole($roleName); foreach ($permissionsNames as $permissionName) { $permission = $this->authManager->getPermission($permissionName); if (!$this->authManager->hasChild($role, $permission)) { $this->authManager->addChild($role, $permission); } } } }
/** * Adding or deleting children if needed */ protected function manageRelations() { foreach ($this->_children as $p => $kids) { $parent = $this->_items[$p]; foreach ($kids as $k) { $kid = $this->_items[$k]; if (!$this->_auth->hasChild($parent, $kid)) { Console::stdout($kid->name . ' added as a child of ' . $parent->name . "\n"); $this->_auth->addChild($parent, $kid); } } foreach ($this->_auth->getChildren($p) as $current_kid) { if (!in_array($current_kid->name, $kids)) { Console::stdout(Console::ansiFormat('Relation between ' . $current_kid->name . ' and ' . $parent->name . " was removed!\n", [Console::FG_RED])); $this->_auth->removeChild($parent, $current_kid); } } } }