public function setKey(EventInterface $event)
{
$acl = $event->getAccessControl();
if (!$acl instanceof MutableAdapterInterface) {
throw new ResourceException('Access control adapter is immutable', 405);
}
$request = $event->getRequest();
$data = json_decode($request->getContent(), true);
if (!isset($data['privateKey'])) {
throw new InvalidArgumentException('No privateKey provided', 400);
}
$publicKey = $request->getRoute()->get('publickey');
$privateKey = $data['privateKey'];
$keyExists = $acl->publicKeyExists($publicKey);
if ($keyExists) {
$acl->updatePrivateKey($publicKey, $privateKey);
} else {
$acl->addKeyPair($publicKey, $privateKey);
}
$event->getResponse()->setStatusCode($keyExists ? 200 : 201);
}