Validácia a výnimky
ValidDomain je validačné pravidlo Laravelu pre názvy hostiteľov. Vystavenie ho spúšťa na každú doménu, takže neplatný vstup sa k poskytovateľovi nikdy nedostane:
use RoundlyConsulting\Certificates\Rules\ValidDomain;
$request->validate(['domain' => ['required', new ValidDomain]]);
// Reject wildcards such as *.example.com
$request->validate(['domain' => ['required', new ValidDomain(allowWildcard: false)]]);
// Standalone checks
(new ValidDomain)->passes('shop.example.com'); // true
(new ValidDomain)->passes('https://shop.example.com'); // falsePlatný názov hostiteľa má aspoň dve časti, každú s 1–63 písmenami, číslicami alebo vnútornými pomlčkami, nečíselnú doménu najvyššej úrovne a najviac 253 znakov. Schémy, cesty, porty, medzery aj bodka na konci sa zamietnu. Úvodný wildcard *. je povolený, pokiaľ neodovzdáte allowWildcard: false.
Výnimky
Všetky chyby balíka rozširujú CertificateException, takže ich zachytíte jedným catch:
| Výnimka | Kedy vznikne |
|---|---|
CertificateException | Základná trieda. Vznikne aj pri doméne bez záznamu v registri (renew(), renewLater(), revoke(), expire()), pri nepovolenom prechode stavu (renew(), renewLater(), revoke(), expire()), keď poskytovateľ hlási certifikát ako failed, expired či revoked, keď obnova vrátila ten istý certifikát (alebo bez odtlačku neposunula expiráciu), pri issue() pre doménu, ktorej názov certifikátu už patrí inej doméne, keď disk nahlási neúspešný zápis do úložiska, pri názve bez uloženého PEM v súborovom driveri, pri PEM, ktorý nie je X.509 certifikát, a keď monitorExpiry() nenájde príjemcu. |
InvalidDomainException | Doména pri vystavení neprešla pravidlom ValidDomain. |
ProvisioningInProgressException | issue() alebo renew(), kým zámok vystavenia tohto certifikátu drží iný proces — alebo pri renew(), keď iný proces záznam od načítania zmenil; nič sa nevystavilo a záznam zostal nedotknutý; skúste to znova, keď vystavenie skončí. |
UnknownProviderException | Certificates::driver() — alebo provider() na CertificateProviderManager — dostali neznámy názov drivera. |
AcmeException | Zlyhal krok ACME: adresár, nonce, účet, objednávka, výzva, finalizácia, stiahnutie, podpis, generovanie kľúča alebo nepodporovaný kľúč účtu — vrátane autorizácie, ktorá už nečaká na overenie, tokenu výzvy, ktorý nie je base64url, a kontroly, ktorú autorita odmietla (s jej popisom chyby). |
KubernetesApiException | Volanie Kubernetes API zlyhalo (s HTTP stavom a telom odpovede) alebo je driver nesprávne nakonfigurovaný. |
Správy sa zostavujú v aktuálnom jazyku z certificates::messages (angličtina a slovenčina) — okrem CertificateException::unparseable(), KubernetesApiException a AcmeException, ktoré zostávajú v angličtine. providerReported() uvádza stav jeho preloženým názvom (v stave „Neúspešný“, v angličtine as Failed).
use RoundlyConsulting\Certificates\Exceptions\CertificateException;
use RoundlyConsulting\Certificates\Exceptions\InvalidDomainException;
use RoundlyConsulting\Certificates\Exceptions\ProvisioningInProgressException;
use RoundlyConsulting\Certificates\Facades\Certificates;
try {
Certificates::for($domain)->using('acme')->issue();
} catch (InvalidDomainException $e) {
// a domain failed ValidDomain — nothing was recorded or requested
} catch (ProvisioningInProgressException $e) {
// another process is provisioning this certificate — the row was not touched, retry later
} catch (CertificateException $e) {
// any other package error: ACME, Kubernetes API, unknown driver,
// or a provider that reports the certificate failed, expired or revoked
}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.