/** * testSetGet * * @covers \RcmUser\Acl\Entity\AclRule * * @return void */ public function testSetGet() { $aclRule = new AclRule(); $rule = 'allow'; $roleId = 'somerole'; $resource = 'someresource'; $privileges = ['someprivilege']; $assertion = 'someassertion'; $aclRule->setRule($rule); $aclRule->setRoleId($roleId); $aclRule->setResourceId($resource); $aclRule->setPrivileges($privileges); $aclRule->setAssertion($assertion); $this->assertEquals($rule, $aclRule->getRule(), 'Setter or getter failed.'); $this->assertEquals($roleId, $aclRule->getRoleId(), 'Setter or getter failed.'); $this->assertEquals($resource, $aclRule->getResourceId(), 'Setter or getter failed.'); $this->assertEquals($privileges, $aclRule->getPrivileges(), 'Setter or getter failed.'); $this->assertEquals($assertion, $aclRule->getAssertion(), 'Setter or getter failed.'); $aclRule->setPrivileges([]); $this->assertEquals([], $aclRule->getPrivileges(), 'Empty privileges should be stored as [].'); }
/** * read * * @param AclRule $aclRule the aclRule * * @return Result */ public function read(AclRule $aclRule) { $rule = $aclRule->getRule(); $roleId = $aclRule->getRoleId(); $resourceId = $aclRule->getResourceId(); $privileges = $aclRule->getPrivileges(); // check required if (empty($rule) || empty($roleId) || empty($resourceId)) { return new Result(null, Result::CODE_FAIL, "Rule could not be found by rule, roleId and resourceId."); } $query = $this->getEntityManager()->createQuery('SELECT rule FROM ' . $this->getEntityClass() . ' rule ' . 'WHERE rule.rule = ?1 ' . 'AND rule.roleId = ?2 ' . 'AND rule.resourceId = ?3 ' . 'AND rule.privileges = ?4'); $query->setParameter(1, $rule); $query->setParameter(2, $roleId); $query->setParameter(3, $resourceId); $query->setParameter(4, json_encode($privileges)); $rules = $query->getResult(); if (empty($rules[0])) { return new Result([]); } return new Result($rules[0]); }
/** * populate * * @param array|AclRule $data data * * @return void * @throws RcmUserException */ public function populate($data = []) { if ($data instanceof AclRule) { $this->setRule($data->getRule()); $this->setRoleId($data->getRoleId()); $this->setResourceId($data->getResourceId()); $this->setPrivileges($data->getPrivileges()); $this->setAssertion($data->getAssertion()); return; } if (is_array($data)) { if (isset($data['rule'])) { $this->setRule($data['rule']); } if (isset($data['roleId'])) { $this->setRoleId($data['roleId']); } if (isset($data['resourceId'])) { $this->setResourceId($data['resourceId']); } // @bc This is only here to support older versions if (isset($data['privilege'])) { $this->setPrivilege($data['privilege']); } if (isset($data['privileges'])) { $this->setPrivileges($data['privileges']); } if (isset($data['assertion'])) { $this->setAssertion($data['assertion']); } return; } throw new RcmUserException('Rule data could not be populated, data format not supported'); }
/** * createRule * * @param AclRule $aclRule aclRule * * @return Result */ public function deleteRule(AclRule $aclRule) { $rule = $aclRule->getRule(); $roleId = $aclRule->getRoleId(); $resource = $aclRule->getResourceId(); // check required if (empty($rule) || empty($roleId) || empty($resource)) { return new Result(null, Result::CODE_FAIL, "Rule requires: rule, roleId and resourceId."); } // check if exists and get valid id $result = $this->aclRuleDataMapper->read($aclRule); if (!$result->isSuccess()) { return $result; } return $this->aclRuleDataMapper->delete($result->getData()); }