serviceContainer = $serviceContainer; $this->user = $user; $this->entityManager = $entityManager; } /** * @throws Forbidden * @throws NotFound */ public function generateNewApiKey(string $id): User { if (!$this->user->isAdmin()) { throw new Forbidden(); } $service = $this->serviceContainer->get(User::ENTITY_TYPE); /** @var ?User $entity */ $entity = $service->getEntity($id); if (!$entity) { throw new NotFound(); } if (!$entity->isApi()) { throw new Forbidden(); } $apiKey = Util::generateApiKey(); $entity->set('apiKey', $apiKey); if ($entity->getAuthMethod() === Hmac::NAME) { $secretKey = Util::generateSecretKey(); $entity->set('secretKey', $secretKey); } $this->entityManager->saveEntity($entity); $service->prepareEntityForOutput($entity); return $entity; } }