{"record":{"id":"cc571f912059ccd0","repo":"passbolt/passbolt_api","slug":"e-getmessage","errorCode":null,"errorMessage":"$e->getMessage()","messagePattern":"\\$e->getMessage\\(\\)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"plugins/PassboltCe/Metadata/src/Command/GenerateDummyMetadataKeyCommand.php","lineNumber":60,"sourceCode":"    public function execute(Arguments $args, ConsoleIo $io): ?int\n    {\n        parent::execute($args, $io);\n\n        if (!Configure::read('debug') || !Configure::read('passbolt.selenium.active')) {\n            $io->out('Please enable DEBUG and PASSBOLT_SELENIUM_ACTIVE flags.');\n\n            return $this->errorCode();\n        }\n\n        $verbose = false;\n        if ($args->getOption('verbose')) {\n            $verbose = true;\n        }\n        try {\n            $key = (new GenerateDummyMetadataKeyService())->generate($verbose);\n            $io->out('New key generated and encrypted for users: ' . $key->fingerprint);\n        } catch (Exception $e) {\n            $io->err($e->getMessage());\n\n            return $this->errorCode();\n        }\n\n        return $this->successCode();\n    }\n}\n","sourceCodeStart":42,"sourceCodeEnd":68,"githubUrl":"https://github.com/passbolt/passbolt_api/blob/31c1bbc10f32808a607fa9bd81891e898779c0bc/plugins/PassboltCe/Metadata/src/Command/GenerateDummyMetadataKeyCommand.php#L42-L68","documentation":"GenerateDummyMetadataKeyCommand is a CakePHP console command that generates a dummy metadata key and encrypts it for all users via GenerateDummyMetadataKeyService::generate(). When generate() throws any Exception, the command prints the raw exception message to stderr and exits with a non-zero error code. The message shown to the user is whatever the underlying service threw, e.g. key generation or encryption failures.","triggerScenarios":"Running `passbolt generate_dummy_metadata_key` (or the command class directly) when GenerateDummyMetadataKeyService::generate() fails — e.g. no users exist to encrypt the key for, OpenPGP key generation/encryption failure, or metadata plugin settings in an inconsistent state.","commonSituations":"Developers running the dummy-key command on a fresh instance with no users; environments with broken GnuPG/OpenPGP configuration; running against an org settings state that forbids metadata key generation.","solutions":["Read the printed exception message to identify the underlying failure (usually encryption or missing users).","Ensure at least one active user exists so the key can be encrypted for them.","Verify GnuPG/OpenPGP server configuration (gnupg keyring, passbolt server key) works: `ddev exec gpg --list-keys`.","Fix the underlying issue (users/config), then re-run the command with `--verbose` for detail.","If only investigating, run unit tests for GenerateDummyMetadataKeyService to reproduce."],"exampleFix":"// before\n$io->err($e->getMessage());\n// after\n$io->err('Failed to generate dummy metadata key: ' . $e->getMessage());\n$io->err('Check that active users exist and GnuPG is configured.');","handlingStrategy":"try-catch","validationCode":"// before running the command\n$usersTable = \\Cake\\ORM\\TableRegistry::getTableLocator()->get('Users');\nif ($usersTable->find()->where(['deleted' => false])->count() === 0) {\n    throw new \\RuntimeException('No active users found; dummy metadata key cannot be encrypted for anyone.');\n}","typeGuard":"function hasActiveUsers(): bool {\n    return \\Cake\\ORM\\TableRegistry::getTableLocator()->get('Users')\n        ->find()->where(['deleted' => false])->count() > 0;\n}","tryCatchPattern":"try {\n    $key = (new GenerateDummyMetadataKeyService())->generate($verbose);\n} catch (\\Exception $e) {\n    $io->err('Dummy metadata key generation failed: ' . $e->getMessage());\n    return $this->errorCode();\n}","preventionTips":["Ensure active users exist before generating dummy keys.","Validate GnuPG keyring and server key configuration regularly.","Use --verbose to capture diagnostics on failure.","Run the command only on dev/test instances, as intended."],"tags":["cli","metadata","key-generation","exception-message"],"backgroundTag":"api-error-response","analyzedSha":"31c1bbc10f32808a607fa9bd81891e898779c0bc","analyzedAt":"2026-09-17T00:04:38.960Z","contentChangedAt":"2026-09-17T00:04:38.960Z","schemaVersion":2},"datasetVersion":"2026-09-21T04:17:39.646Z"}