Skip to content

Commit f84b489

Browse files
committed
feat: Add TicketHelper for secure message previews and implement Vue component for ticket chat functionality
1 parent 9206dfe commit f84b489

3 files changed

Lines changed: 518 additions & 0 deletions

File tree

app/Helpers/TicketHelper.php

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Helpers;
6+
7+
use Illuminate\Support\Str;
8+
9+
/**
10+
* Helper para operações seguras relacionadas a tickets de suporte.
11+
* Garante sanitização de conteúdo em previews e notificações.
12+
*/
13+
final class TicketHelper
14+
{
15+
/**
16+
* Tamanho padrão para preview de mensagem em listagens e notificações.
17+
*/
18+
public const PREVIEW_LIMIT = 80;
19+
20+
/**
21+
* Retorna um preview seguro da mensagem (sem HTML) para exibição em listas,
22+
* notificações e outros contextos onde o texto completo não é necessário.
23+
*
24+
* O conteúdo completo permanece como string pura no banco.
25+
*
26+
* @param string|null $message Conteúdo bruto da mensagem
27+
* @param int $limit Máximo de caracteres (default 80)
28+
* @return string Texto sanitizado e truncado
29+
*/
30+
public static function safeMessagePreview(?string $message, int $limit = self::PREVIEW_LIMIT): string
31+
{
32+
if ($message === null || $message === '') {
33+
return '';
34+
}
35+
36+
$plain = strip_tags($message);
37+
$decoded = html_entity_decode($plain, ENT_QUOTES | ENT_HTML5, 'UTF-8');
38+
39+
return Str::limit($decoded, $limit);
40+
}
41+
}

0 commit comments

Comments
 (0)