passbolt/passbolt_api · error · NotFoundException
The self registration plugin is not enabled.
Error message
The self registration plugin is not enabled.
What it means
SelfRegistrationDefaultDryRunService is the fallback dry-run service used when no specific self-registration strategy (e.g. email domains) applies. Its canGuestSelfRegister always throws NotFoundException to signal that no self-registration provider is enabled. The message means the plugin's registration mechanism is not configured on this instance.
Solutions
- Configure self-registration settings via the admin UI or POST /self-registration/settings
- Verify organization settings contain the self-registration property
- Confirm the intended DryRun service (e.g. email domains) is registered/enabled in the plugin bootstrap
- If self-registration should be off, stop calling the dry-run endpoint
Example fix
// before
curl -X POST https://passbolt/self-registration/dry-run ... // no settings configured
// after
curl -X POST https://passbolt/self-registration/settings -H 'Content-Type: application/json' \
-d '{"providers":{"emailDomains":{"allowed_domains":["example.com"]}}}'
# then retry the dry-run Defensive patterns
Strategy: try-catch
Validate before calling
// Check self-registration availability before dry-run
const settings = await api.get('/self-registration/settings.json');
if (!settings || settings.providers == null) skipDryRun(); Type guard
const isSelfRegistrationDisabled = (e) => e?.status === 404 && /not enabled/i.test(e?.message ?? '');
Try / catch
try {
await api.post('/self-registration/dry-run', payload);
} catch (e) {
if (isSelfRegistrationDisabled(e)) { /* hide self-registration UI */ }
} Prevention
- Configure self-registration settings before exposing the registration UI
- Gate the registration flow on a settings availability check
- Remember the default dry-run service always throws — never call it expecting success
- After disabling settings, remove dependent client flows
When it happens
Trigger: POST /self-registration/dry-run when the self-registration plugin is enabled at the code level but no provider/settings exist, so the default (null-object) service is selected.
Common situations: Instance with self-registration settings deleted or never configured; admin disabled self-registration; environment (e.g. staging) lacking the production settings; plugin loaded but organization settings missing.
Related errors
- Registration is not opened to public. Please contact your…
- SCIM settings endpoints are disabled.
- The self registration is disabled.
- The user does not exist or has been deleted.
- 500
AI-assisted analysis of passbolt/passbolt_api@31c1bbc10f (2026-09-17).
Data as JSON: /api/errors/ac2740cc371293f6.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/PassboltCe/SelfRegistration/src/Service/DryRun/SelfRegistrationDefaultDryRunService.php:36
use Cake\Http\Exception\NotFoundException;
class SelfRegistrationDefaultDryRunService implements SelfRegistrationDryRunServiceInterface
{
/**
* @inheritDoc
*/
public function isSelfRegistrationOpen(): bool
{
return false;
}
/**
* @inheritDoc
*/
public function canGuestSelfRegister(array $data): bool
{
throw new NotFoundException(__('The self registration plugin is not enabled.'));
}
}
View on GitHub (pinned to 31c1bbc10f)