---
title: "Relácie — Refresh Tokens for Laravel | Roundly"
description: "Vypisujte, vyhľadávajte a odvolávajte relácie zariadení podľa stabilného ID rodiny — základ obrazovky „vaše zariadenia“."
url: https://roundly-consulting.com/sk/open-source/navody/refresh-tokens-for-laravel/relacie
language: sk
---

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

[Refresh Tokens for Laravel](https://roundly-consulting.com/sk/open-source/navody/refresh-tokens-for-laravel.md)

# Relácie

Relácia je rodina tokenov; údaje o zariadení nesie jej aktívny riadok. ID riadkov sa pri každej rotácii menia, preto reláciu adresujte cez ID rodiny — stabilné ID relácie, ktoré sa prirodzene hodí aj ako claim sid vo vašom prístupovom tokene:

```php
$sessions = RefreshTokens::sessions($user);

$sessions->all();                              // active rows, newest first
$sessions->find($familyId);                    // ?RefreshToken — active row of that family
$sessions->revoke($familyId);                  // bool — revokes every active row of it
$sessions->revokeAllExcept($currentFamilyId);  // "log out my other devices"; int
$sessions->revokeOthers($currentAccess->jti);  // same, keyed by access reference
$sessions->revokeAll();                        // revoke every session

// On the owner model via the trait:
$user->refreshTokens();  // MorphMany, all tokens
$user->sessions();       // MorphMany, active tokens only
```

| Metóda | Vracia | Poznámka |
| --- | --- | --- |
| `sessions($owner)->all()` | `Collection<RefreshToken>` | Aktívne riadky, od najnovšieho. |
| `sessions($owner)->find($familyId)` | `?RefreshToken` | Aktívny riadok danej rodiny; null pri chybnom ID alebo rodine iného vlastníka. |
| `sessions($owner)->revoke($familyId, $reason)` | `bool` | Odvolá všetky aktívne riadky rodiny (predvolene Logout); false, ak nebolo nič aktívne. |
| `sessions($owner)->revokeAllExcept($keepFamilyId, $reason)` | `int` | Ponechá jednu reláciu podľa ID rodiny (predvolene LogoutAll); null alebo neznáme ID odvolá všetko. |
| `sessions($owner)->revokeOthers($currentAccessReference, $reason)` | `int` | Ponechá reláciu s daným odkazom na prístupový token (predvolene LogoutAll); null odvolá všetko. |
| `sessions($owner)->revokeAll($reason)` | `int` | Odvolá všetky relácie (predvolene LogoutAll). |
| `session($row)->enrich($device, $location)` | `void` | Zapíše údaje o zariadení a polohe dodané aplikáciou do jedného riadku (model alebo jeho kľúč). |
| `session($row)->revoke($reason)` | `bool` | Odvolá jeden riadok, ktorý máte k dispozícii (predvolene Manual). |

- Objekt pracuje v rozsahu vlastníka: rodina iného vlastníka — aj vlastníka iného typu s rovnakým id — je neznáma (find() vráti null, revoke() false a nič sa nezmení).
- ID sa pred akýmkoľvek dopytom overia ako UUID — chybné ID vráti null/false, nikdy nie chybu databázy.
- revoke() odvolá všetky aktívne riadky rodiny — rotácia v tolerančnom okne môže nakrátko ponechať dva — a každý odkaz na prístupový token zneplatní raz.
- revokeAllExcept s null alebo neznámym ID odvolá všetko: pri neznámej „aktuálnej relácii“ je bezpečnejšie zlyhať uzavreto.
- $row->sessionStartedAt() vráti začiatok rodiny, ktorý sa pri rotácii dedí bez zmeny.

## Metódy na modeli vlastníka

Trait HasRefreshTokens pridáva metódy, ktoré sa čítajú ako vlastník konajúci sám za seba. Každá deleguje na manažéra — je to skratka pre RefreshTokens::sessions($this) —, takže ich RefreshTokens::fake() tiež zaznamená:

```php
use RoundlyConsulting\RefreshTokens\DataTransferObjects\IssueContext;

$new = $user->issueRefreshToken(new IssueContext(accessReference: $access->jti));
$user->findSession($familyId);              // ?RefreshToken
$user->revokeSession($familyId);            // bool
$user->revokeAllSessions();                 // = RefreshTokens::sessions($user)->revokeAll(); returns count
$user->revokeOtherSessions($currentAccess->jti); // keep current, revoke the rest; returns count
```

## Endpoint „vaše zariadenia“

Zoznam zostavte z aktívnych riadkov; token\_hash a access\_reference sú pri serializácii skryté, takže bezpečné je vrátiť aj celé riadky:

```php
return RefreshTokens::sessions($user)->all()->map(fn ($session) => [
    'id' => $session->family_id,               // stable session id
    'browser' => $session->browser,
    'os' => $session->os,
    'device' => $session->device_type,
    'city' => $session->city,
    'started_at' => $session->sessionStartedAt(),
    'current' => $session->family_id === $currentFamilyId,
]);
```

## 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/refresh-tokens-for-laravel.md)
