public function testCreateResource() { $resource = new AclResource(); $resource->initialize(); $this->assertNull($resource->id); $result = $resource->save(['name' => 'CreatedResource', 'description' => 'Sample description', 'scope' => '']); $this->assertTrue($result); $this->assertEquals(AclResource::DIRTY_STATE_PERSISTENT, $resource->getDirtyState()); }
public function testIsWildcard() { $resourceModel = new AclResource(); $result = $resourceModel->save(['name' => 'IsWildcardResource', 'description' => 'foo bar bazz 1 2', 'scope' => '']); $this->assertTrue($result); $this->assertEquals(AclResource::DIRTY_STATE_PERSISTENT, $resourceModel->getDirtyState()); $accessModel = new AclResourceAccess(); $result = $accessModel->create(['acl_resource_id' => $resourceModel->id, 'name' => '*', 'description' => '', 'inherit' => null]); $this->assertTrue($result); $this->assertEquals(AclResource::DIRTY_STATE_PERSISTENT, $resourceModel->getDirtyState()); $this->assertTrue($accessModel->isWildcard()); $accessModel->name = 'not wildcard test foo'; $this->assertFalse($accessModel->isWildcard()); }
public function testToAccessArray() { $resourceModel = new AclResource(); $result = $resourceModel->save(['name' => 'toAccessArrayResource', 'description' => 'foo bar baz', 'scope' => '']); $this->assertTrue($result); $roleModel = new AclRole(); $roleModel->create(['name' => 'toAccessArrayRole', 'description' => '', 'removable' => true]); $accessModel = new AclResourceAccess(); $accessModel->create(['acl_resource_id' => $resourceModel->id, 'name' => 'index', 'description' => '', 'inherit' => null]); $aclModel = new AclAccessList(); $aclModel->create(['acl_role_id' => $roleModel->id, 'acl_resource_id' => $resourceModel->id, 'acl_resource_access_id' => $accessModel->id, 'allowed' => false]); $accessArray = ['access_name' => (string) $accessModel, 'resources_name' => (string) $resourceModel, 'allowed' => false]; $toAccessArray = $aclModel->toAccessArray(); $this->assertSame($toAccessArray, $accessArray); }
/** * {@inheritdoc} * Example: * <code> * //Add a resource to the the list allowing access to an action * $acl->addResource(new \Phalcon\Acl\Resource('customers'), 'search'); * $acl->addResource('customers', 'search'); * //Add a resource with an access list * $acl->addResource(new \Phalcon\Acl\Resource('customers'), array('create', 'search')); * $acl->addResource('customers', array('create', 'search')); * </code> * * @param \Phalcon\Acl\Resource $resource * @param array|string $accessList * @return boolean */ public function addResource($resource, $accessList = null) { if (!$resource instanceof Resource) { $resource = new Resource($resource); } try { $resourceModel = $this->getResourceModel($resource->getName()); } catch (ResourceNotExistsException $e) { $resourceModel = new AclResource(); } $resourceModel->save(['name' => $this->filterResourceName($resource->getName()), 'description' => $resource->getDescription(), 'scope' => $resource->getScope()]); if ($accessList) { return $this->addResourceAccess($resource->getName(), $accessList); } return true; }