---
title: "Inštalácia — Sentinel for Laravel | Roundly"
description: "Inštalácia cez Composer, sprievodca sentinel:install, voľba typov morph kľúčov, migrácia, prvý kľúč a zapečatenie existujúcich riadkov."
url: https://roundly-consulting.com/sk/open-source/navody/sentinel-for-laravel/instalacia
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Sentinel for Laravel](https://roundly-consulting.com/sk/open-source/navody/sentinel-for-laravel.md)

# Inštalácia

Pridajte balík a spustite sprievodcu inštaláciou. Service provider sa zaregistruje automaticky; balík neregistruje žiadny globálny alias fasády, preto vždy importujte RoundlyConsulting\\Sentinel\\Facades\\Sentinel:

```bash
composer require roundly-consulting/sentinel-for-laravel
php artisan sentinel:install
```

sentinel:install publikuje konfiguráciu aj migrácie, ukáže typy morph kľúčov, ktoré treba určiť pred migráciou, vygeneruje kľúč predvoleného kruhu, ak žiadny nemá — algoritmom nastaveným pre kruh, vypísaný ako riadky env (do .env nikdy nezapisuje) — a vypíše ďalšie kroky. Okrem publikovania nemení žiadne súbory aplikácie. Ak sa kľúč vygenerovať nepodarí, skončí kódom 1 (ďalšie kroky aj tak vypíše); opakované spustenie neuškodí a --force prepíše publikované súbory.

## Tie isté kroky ručne

Publikujte a spustite migrácie — šesť tabuliek, všetky s prefixom sentinel\_. Migrácie sa len publikujú, idú len dopredu a balík ich nikdy nenačítava sám:

```bash
php artisan vendor:publish --tag="sentinel-migrations"
php artisan migrate
```

Voliteľne publikujte konfiguračný súbor a preklady (angličtina a slovenčina):

```bash
php artisan vendor:publish --tag="sentinel-config"
php artisan vendor:publish --tag="sentinel-translations"
```

| Tag | Publikuje |
| --- | --- |
| `sentinel-migrations` | Šesť migrácií len na publikovanie, len dopredu (bez down()), s doplnenou časovou značkou. |
| `sentinel-config` | config/sentinel.php |
| `sentinel-translations` | lang/vendor/sentinel/{en,sk} |

## Zvoľte typy kľúčov, potom migrujte

Morph stĺpce sa riadia nastaveniami sentinel.key\_type (zapečatené modely) a sentinel.actor\_key\_type (aktéri, vlastníci kľúčov, subjekty nonce) — predvolene bigint, prípadne uuid / ulid. Nastavte ich pred migráciou. Ak kombinujete celočíselné a UUID kľúče na MySQL alebo SQLite, zvoľte uuid: stĺpec je tam char(36) a celočíselné kľúče udrží ako reťazce. Na PostgreSQL je stĺpec uuid natívny a celé čísla odmietne, preto pri zmiešaných kľúčoch najprv publikujte migrácie a tieto id stĺpce zmeňte na string(36). Obe nastavenia sa čítajú striktne: čokoľvek iné než bigint, uuid alebo ulid (bez ohľadu na veľkosť písmen) zastaví migráciu výnimkou — preklep nikdy potichu nevytvorí stĺpce bigint.

Tabuľky sentinel\_keys, sentinel\_idempotency\_keys a sentinel\_nonces používajú sentinel.database.connection; sentinel\_checkpoints, sentinel\_ledger a sentinel\_seals žijú na pripojení každého zapečateného modelu a zdieľajú jeho transakciu. Ak máte zapečatené modely na viacerých pripojeniach, spustite migrácie 0002–0004 na každom a pripojenia uveďte v sentinel.ledger.connections.

## Vytvorte prvý kľúč

Predvolený kruh používa driver config: príkaz vypíše tri riadky env a do .env sám nikdy nezapisuje. Pridajte ich do úložiska tajomstiev a zaobchádzajte s nimi ako s tajomstvom:

```bash
php artisan sentinel:key:generate
# SENTINEL_KEY_ID=default-20261002-k3f9qa
# SENTINEL_ALGORITHM=hmac-sha256
# SENTINEL_KEY="base64:…"
```

Pre asymetrické pečate použite --algorithm=ed25519 (alebo ecdsa-p256-sha256, …); verejná polovica sa vypíše ako SENTINEL\_PUBLIC\_KEY pre uzly len na overovanie. Kľúče HTTP partnerov žijú v kruhu http (driver database) — vygenerujte si vlastný alebo importujte partnerov:

```bash
php artisan sentinel:key:generate --ring=http --database
php artisan sentinel:key:import acme-2026-10 --ring=http --algorithm=ed25519 --file=acme.pem --owner-type=partner --owner-id=7
```

## Zapečaťte model a existujúce riadky

```php
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Sentinel\Concerns\HasSeals;
use RoundlyConsulting\Sentinel\Contracts\Sealable;
use RoundlyConsulting\Sentinel\Definition\SealBuilder;

final class Invoice extends Model implements Sealable
{
    use HasSeals;

    public static function defineSeals(SealBuilder $seals): void
    {
        $seals->seal('financial')->attributes('customer_id', 'currency', 'amount', 'status');
    }
}
```

Každý Eloquent zápis teraz riadok zapečatí. Pečate sú predvolene striktné — riadok bez pečate je zistenie — preto existujúcim riadkom raz vytvorte baseline s dôvodom, ktorý sa zapíše do denníka. Riadky, ktoré už majú históriu v denníku, no pečať stratili, sa nahlásia a baseline nikdy nedostanú: zmazaná pečať je dôkaz.

```bash
php artisan sentinel:seal-missing "App\Models\Invoice" --reason="Initial baseline"
```

## Rýchly štart

Overujte všade, kde na tom záleží — v kóde, v middleware routy alebo v plánovanom skene:

```php
use RoundlyConsulting\Sentinel\Facades\Sentinel;

$invoice->isIntact();                          // true when every seal verifies
Sentinel::for($invoice)->verifyOrFail();       // throws TamperedModelException otherwise

Route::get('/invoices/{invoice}', ShowInvoice::class)->middleware('sentinel.verified');
```

Keď niekto zmení zapečatenú hodnotu mimo aplikácie, overenie pomenuje zmenený stĺpec a ďalšie zápisy do modelu sa odmietnu, kým niekto zmenu nepotvrdí s dôvodom:

```php
// Someone runs UPDATE invoices SET amount = 0 WHERE id = 42 in a SQL console:
Sentinel::for($invoice)->verify();
// VerificationResult { status: Tampered, reason: 'mac', changedAttributes: ['a:amount'], … }

$invoice->update(['note' => 'x']);             // TamperedModelException: refused until acknowledged

Sentinel::for($invoice)->by($admin)->because('INC-88: refund fixed by the DBA')->acknowledge();
```

## Skontrolujte inštaláciu

Nič netreba plánovať: Sentinel si údržbu zaregistruje v plánovači Laravelu sám (php artisan schedule:run spúšťajte každú minútu ako pri každej plánovanej úlohe). Kým migrácie neprebehnú, úlohy sa namiesto zlyhania preskakujú — a sentinel:check zlyhá na kontrole schedule, aby to neostalo nepovšimnuté. Potom spustite kontrolu stavu — jedenásť kontrol, každá ok, warning alebo failure:

```bash
php artisan sentinel:check            # exit 1 on a failure
php artisan sentinel:check --strict   # warnings fail too (CI)
```

## Odporúčané produkčné nastavenia

- Predvolený kruh nechajte na drivere config — kľúče tak zostanú mimo databázy.
- Ak kľúče zdieľa viac aplikácií, nastavte SENTINEL\_CONTEXT na hodnotu jedinečnú pre aplikáciu.
- Nakonfigurujte kotvu mimo databázy aplikácie: SENTINEL\_ANCHORS=cache so SENTINEL\_ANCHOR\_CACHE\_STORE na samostatný Redis, alebo filesystem na objektovom úložisku s object lock.
- Servery len na overovanie: SENTINEL\_AUTO\_SEAL=false a iba verejný materiál kľúčov.
- SENTINEL\_REQUIRE\_BOUND\_LABEL=true — pri novej inštalácii hneď, pri inštalácii aktualizovanej z 1.1 po sentinel:key:reseal (pozri Správa kľúčov).

## Pomenovanie

laravel/sentinel (inštaluje sa s Horizonom, Pulse a Telescope) obsahuje Laravel\\Sentinel\\Sentinel a Laravel\\Sentinel\\SentinelManager a cartalyst/sentinel registruje globálny alias Sentinel. Preto tento balík žiadny alias neregistruje: RoundlyConsulting\\Sentinel\\Facades\\Sentinel a RoundlyConsulting\\Sentinel\\SentinelManager importujte explicitne — IDE môže automaticky naimportovať nesprávnu triedu. php artisan about ukáže plný názov triedy manažéra.

## 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 kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/sentinel-for-laravel.md)
