Paillasse/portail/app/Models/Concerns/GereSessionUnique.php

32 lines
760 B
PHP
Raw Normal View History

<?php
namespace App\Models\Concerns;
use Illuminate\Support\Str;
/**
* Une seule session active par compte (étape 8) : la précédente est coupée
* et son porteur en est averti à sa prochaine requête (voir
* App\Http\Middleware\VerifieSessionUnique).
*/
trait GereSessionUnique
{
public function demarreNouvelleSession(): string
{
$jeton = Str::random(40);
$this->forceFill(['jeton_session_actif' => $jeton])->save();
return $jeton;
}
public function sessionEstEncoreValide(?string $jeton): bool
{
return $jeton !== null && $jeton === $this->jeton_session_actif;
}
public function terminerSession(): void
{
$this->forceFill(['jeton_session_actif' => null])->save();
}
}