/** * Get access rules for the specified public key * * @param EventInterface $event The current event */ public function getRules(EventInterface $event) { $request = $event->getRequest(); $publicKey = $request->getRoute()->get('publickey'); $accessControl = $event->getAccessControl(); $keyExists = $accessControl->publicKeyExists($publicKey); if (!$keyExists) { throw new RuntimeException('Public key not found', 404); } $accessList = $accessControl->getAccessListForPublicKey($publicKey); if ($request->query->has('expandGroups')) { foreach ($accessList as &$rule) { if (!isset($rule['group'])) { continue; } $rule['resources'] = $accessControl->getGroup($rule['group']); } } $model = new AccessRulesModel(); $model->setRules($accessList); $event->getResponse()->setModel($model); }
/** * @covers Imbo\Model\AccessRules::getRules * @covers Imbo\Model\AccessRules::setRules * @covers Imbo\Model\AccessRules::getData */ public function testSetAndGetId() { $rules = [['id' => 1, 'group' => 'group', 'users' => ['user']], ['id' => 2, 'resources' => ['image.get', 'image.head'], 'users' => ['user']]]; $this->assertSame([], $this->model->getRules()); $this->assertSame([], $this->model->getData()); $this->assertSame($this->model, $this->model->setRules($rules)); $this->assertSame($rules, $this->model->getRules()); $this->assertSame($rules, $this->model->getData()); }
/** * {@inheritdoc} */ public function formatAccessRules(Model\AccessRules $model) { $rules = ''; foreach ($model->getRules() as $rule) { $rules .= $this->formatAccessRuleArray($rule); } return <<<RULES <?xml version="1.0" encoding="UTF-8"?> <imbo> <access>{$rules}</access> </imbo> RULES; }
/** * {@inheritdoc} */ public function formatAccessRules(Model\AccessRules $model) { return $this->encode($model->getRules()); }