public function createComponentRulesGrid($name) { $grid = new Grid($this, $name); $grid->setModel($this->ruleService->getRulesDatasource()); $grid->setTranslator($this->getTranslator()); $grid->addColumnNumber('id', '#')->cellPrototype->class[] = 'center'; $headerId = $grid->getColumn('id')->headerPrototype; $headerId->class[] = 'center'; $headerId->rowspan = "2"; $headerId->style['width'] = '0.1%'; $grid->addColumnText('role', "securityModule.admin.grid.role")->setSortable()->setFilterSelect([null => null] + $this->getSelectRoles()); $headerParent = $grid->getColumn('role')->headerPrototype; $headerParent->class[] = 'center'; $grid->addColumnText('resource', "securityModule.admin.grid.resource")->setSortable()->setCustomRender($this->resourceRender)->setFilterText(); $headerAdded = $grid->getColumn('resource')->headerPrototype; $headerAdded->class[] = 'center'; $grid->addColumnText('privilege', "securityModule.admin.grid.privilege")->setSortable()->setCustomRender($this->privilegeRender)->setTruncate(15)->setFilterText(); $headerNote = $grid->getColumn('privilege')->headerPrototype; $headerNote->class[] = 'center'; $modesList = [null => null] + AclMode::getOptions(); $grid->addColumnText('mode', "securityModule.admin.grid.mode")->setSortable()->setCustomRender($this->modeRender)->setTruncate(15)->setFilterSelect($modesList); $headerNote = $grid->getColumn('mode')->headerPrototype; $headerNote->class[] = 'center'; $grid->addActionHref('delete', '', 'deleteRule!')->setIcon('trash')->setElementPrototype(\Nette\Utils\Html::el("a")->addAttributes(["title" => $this->tt("securityModule.admin.grid.delete")]))->setConfirm(function ($u) { return $this->tt("securityModule.admin.grid.rlyDeleteRule", null, ["pos" => $u]); }); $grid->addActionHref('edit', '', 'updateRule')->setIcon('pencil')->setElementPrototype(\Nette\Utils\Html::el("a")->addAttributes(["title" => $this->tt("securityModule.admin.grid.update")])); $grid->setOperation(["delete" => $this->tt("system.common.delete")], $this->ruleGridOpsHandler); $grid->setFilterRenderType($this->filterRenderType); $grid->setExport("admin-rules " . date("Y-m-d H:i:s", time())); }
private function setRules(Permission $p) { try { $rules = $this->rulesService->getRules(); } catch (Exceptions\DataErrorException $e) { $this->logError($e->getMessage()); } foreach ($rules as $r) { if ($r->isPermit()) { $p->allow($r->getRole()->getName(), $r->hasResource() ? $r->getResource() : Permission::ALL, $r->hasPrivilege() ? $r->getPrivileges() : Permission::ALL); } else { $p->deny($r->getRole()->getName(), $r->hasResource() ? $r->getResource() : Permission::ALL, $r->hasPrivilege() ? $r->getPrivileges() : Permission::ALL); } } }
public function rulesInit() { $role = $this->roleService->getRoleName("admin"); $rule = null; try { $rule = $this->ruleService->getUniqueRule($role); } catch (Exceptions\NoResultException $ex) { $this->logger->addDebug($ex->getMessage()); } if ($rule === null) { $this->logger->addInfo("Security module initializer - AclRules - no godlike Rule for role {$role} found. New one is gonna be created."); $rule = new AclRule(); $rule->setRole($role); $rule->setResource(null); $rule->setPrivilege(null); $rule->setMode(\App\Model\Misc\Enum\AclMode::PERMIT); $this->ruleService->createRule($rule); } }