padosoft/laravel-settings
Laravel Settings gives your application a simple, persistent key-value store for configuration. Define settings in the database, read and update them through a clean API, and rely on caching so values load fast without extra queries. Settings stay editable at runtime, keeping configuration out of co...
.env, config, or a side table.encryption-audit / encryption-migrate / encryption-rotate commands (dry-run by default, idempotent, never print values) give ops a documented, repeatable runbook — useful for SOC 2 / ISO 27001 narratives and change management.toArray()/toJson() are redacted, you can expose a settings screen where an admin enters an API key and get correct validation, safe API responses, and no secret leakage in the UI payload — a prerequisite for shipping any "bring your own credentials" feature.previous keys means you can commit to a rotation cadence (quarterly, on offboarding, on suspected compromise) without a maintenance window or mass re-encryption — a roadmap enabler, not just an internal hygiene task.TEXT, keyring provisioning, ciphertext migration), not an open-ended risk.Consider it when:
APP_KEY-derived scheme.APP_KEY — e.g. keys sourced from a secret manager per environment, with a deployment context bound into the ciphertext so prod data cannot be decrypted with staging keys.previous keys, a migrate command, and a documented two-phase procedure.encrypted_keys — the upgrade is low-impact by the maintainer's own statement, so it is a cheap way to get onto the supported, production-safe path.Look elsewhere when:
TEXT migration, and rotation runbook are real operational overhead you should not take on for a key/value table of feature flags..env — you inherit the ceremony without the benefit.For executives: The settings package we use (or are evaluating) shipped v7.0.0, which fixes a defect that made encrypted settings unusable in production on 6.x — writes through two different paths produced incompatible ciphertext, and the failure mode included writing decrypted values into Redis and into logs. v7 collapses this to one encryption path, adds a versioned envelope bound to the setting key and deployment context, moves to a dedicated keyring independent of APP_KEY, supports two-phase key rotation, fails closed on plaintext found where ciphertext is required, and redacts secrets from serialization and logs. Three audited artisan commands cover inventory, migration, and rotation, dry-run by default and never printing values. Risk is contained: teams that never populated encrypted_keys see no functional change, and the upgrade is documented in a dedicated guide with an exception hierarchy that stays backward compatible. It is a scoped, plannable upgrade that converts an open security liability into a compliance asset.
For engineering: One SettingsCipher used by both the Model and SettingsManager; envelope pdsenc:v1:<kid>:<payload> with cryptographic binding to the setting key and deployment context; encryptString() so there is no unserialize() on decrypted data. Validation and casts now run on plaintext, DB and cache hold identical raw, and accessor-side echo is gone. encryption-audit, encryption-migrate, and encryption-rotate are idempotent and dry-run by default, with no values or lengths printed. A migration widens settings.value to TEXT because an envelope does not fit VARCHAR(255). 71 tests green on PHP 8.2, including the full write-path × cache-state matrix. Breaking changes are enumerated in UPGRADE-7.0.md; existing DecryptException handlers continue to work. Action items: provision the keyring and its backups before deploy, run the audit in dry-run, then migrate.
How can I help you explore Laravel packages today?