$registrationId, 'exp' => now()->addMinutes($ttl)->timestamp, ]; return Crypt::encryptString(json_encode($payload)); } public function verify(string $token): ?int { try { $json = Crypt::decryptString($token); $payload = json_decode($json, true); if (!is_array($payload)) return null; if (($payload['exp'] ?? 0) < time()) return null; $rid = (int) ($payload['rid'] ?? 0); return $rid > 0 ? $rid : null; } catch (\Throwable $e) { return null; } } }