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

  1. Configure self-registration settings via the admin UI or POST /self-registration/settings
  2. Verify organization settings contain the self-registration property
  3. Confirm the intended DryRun service (e.g. email domains) is registered/enabled in the plugin bootstrap
  4. 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

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


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)