Stav a živé reporty
Na rôzne otázky odpovedajú dva zdroje stavu. Certificates::status() číta register — CertificateStatus posledného záznamu alebo null. Certificates::statusReport() sa živo pýta poskytovateľa a vracia CertificateStatusReport, cachovaný podľa status_cache.*:
Certificates::statusReport('app.example.com'); // cached
Certificates::statusReport('app.example.com', fresh: true); // bypass + refresh
Certificates::for('app.example.com')->fresh()->statusReport();$report = Certificates::statusReport('app.example.com', driver: 'acme');
$report?->status; // CertificateStatus
$report?->expiresAt; // CarbonImmutable|null
$report?->issuer; // ?string
$report?->serial; // ?string
$report?->fingerprint; // ?string
$report?->domains; // list<string> — SANsstatusReport() vracia null pre driver, ktorý stav hlásiť nevie — null alebo vlastný driver bez ReportsCertificateStatus.
Cache
Pri zapnutom status_cache.enabled sa každý report uloží do status_cache.store na status_cache.ttl sekúnd pod kľúčom pre driver a názov certifikátu. fresh: true — alebo ->fresh() na builderi — sa poskytovateľa opýta znova a záznam v cache obnoví. issue() a renew() cachovaný report daného certifikátu zahodia, takže ďalšie statusReport() prečíta nový stav, nie ten z cache spred zmeny. Záznam sami odstránite cez resolver:
use RoundlyConsulting\Certificates\Support\CachedStatusResolver;
app(CachedStatusResolver::class)->forget('acme', Certificates::certificateName('app.example.com'));Enum CertificateStatus
Stĺpec status modelu je pretypovaný na reťazcový enum s natívnym stavovým automatom:
| Prípad | Hodnota | Farba | Môže prejsť do |
|---|---|---|---|
Pending | pending | amber | Requested |
Requested | requested | amber | Issued, Failed |
Issued | issued | green | Renewing, Expired, Revoked |
Renewing | renewing | amber | Renewed, Failed |
Renewed | renewed | green | Renewing, Expired, Revoked |
Failed | failed | red | Renewing — zlyhaný záznam sa dá znova obnoviť |
Expired | expired | red | — (koncový) |
Revoked | revoked | red | — (koncový) |
use RoundlyConsulting\Certificates\Enums\CertificateStatus;
CertificateStatus::Issued->isActive(); // true
CertificateStatus::Revoked->isTerminal(); // true
CertificateStatus::Failed->isTerminal(); // false — a failed row can be renewed again
CertificateStatus::Requested->canTransitionTo(CertificateStatus::Issued); // true
CertificateStatus::Failed->canTransitionTo(CertificateStatus::Renewing); // true
CertificateStatus::Issued->allowedTransitions(); // [Renewing, Expired, Revoked]
CertificateStatus::Issued->color(); // 'green'
CertificateStatus::Issued->label(); // 'Issued'
CertificateStatus::toOptions(); // value => label, for selects
CertificateStatus::validationRule(); // 'in:pending,requested,issued,...'isActive() platí pre Issued a Renewed; isTerminal() pre Expired a Revoked — také záznamy oživí len nové issue(). Failed nie je koncový stav: zlyhané vystavenie či obnovu môžete znova obnoviť. Enum používa trait Helpers z enums-for-laravel, ktorý pridáva values(), labels(), options(), toOptions(), validationRule(), tryFromLabel() a ďalšie metódy pre administráciu a validáciu.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.