Files
twenty/packages
Sonarly Claude Code d9ddca0a2f fix: restore legacy enterprise key fallback in isValid() for SSO access
https://sonarly.com/issue/28801?type=bug

Self-hosted users who previously enabled SSO by setting an ENTERPRISE_KEY environment variable can no longer log in via OIDC/SAML SSO after upgrading, because the enterprise validity check now requires a paid subscription token.

Fix: ## Fix

Restored the legacy `ENTERPRISE_KEY` environment variable fallback in `EnterprisePlanService.isValid()`.

**What changed:**

In `enterprise-plan.service.ts`, line 150:
```typescript
// Before (broken):
isValid(): boolean {
    return this.hasValidEnterpriseValidityToken();
}

// After (fixed):
isValid(): boolean {
    return this.hasValidEnterpriseValidityToken() || this.checkLegacyKey();
}
```

This restores the behavior that existed between commits `c1da7be6d7` (March 12) and `2fccd194f3` (April 15), where `isValid()` accepted either:
1. A valid signed `ENTERPRISE_VALIDITY_TOKEN` from a paid subscription, **or**
2. Any defined `ENTERPRISE_KEY` environment variable (legacy path)

The commit `2fccd194f3` that removed this fallback explicitly stated in its message: "Re-using hasValidEnterpriseKey to avoid breaking changes. This will be entirely removed in the next versions." However, the implementation contradicted this intent — `hasValidEnterpriseKey()` (which retains the legacy check) is only used in a workspace resolver field, while the guard that gates all enterprise features calls `isValid()`, which had the legacy check removed.

**Test update:**

Updated the test case in `enterprise-plan.service.spec.ts` from `should return false with unsigned legacy key` to `should return true with unsigned legacy key`, correctly reflecting that a legacy ENTERPRISE_KEY should enable enterprise features.

**Impact:**

Self-hosted users who set `ENTERPRISE_KEY` to any value will once again have SSO (OIDC/SAML), row-level security, and audit log features enabled — restoring the behavior they had before the April 15 update.
2026-04-19 17:16:11 +00:00
..
2026-04-19 13:35:47 +02:00
2026-04-16 09:47:44 +00:00