feat: never-expire Telegram session + logout confirmation on both channels
- STATE_TTL: 7200s → 315360000s (10 years) so sessions survive indefinitely - Telegram: "salir"/"/salir" now shows inline confirmation keyboard instead of going straight to menu; "Cerrar sesión" button added to main menu; logout_ask/logout_confirm/confirmLogout() handler clears state and returns to email prompt - Web chat: "Cerrar sesión" button in main menu; clicking it shows a confirmation message with "Sí, cerrar sesión" / "No, quedarme" buttons; only the confirmed action calls cerrarSesion() Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
80dd7ee9ca
commit
9a13bad235
Regular → Executable
+22
@@ -171,6 +171,25 @@ class PublicChat extends Component
|
||||
$this->paso = 'email';
|
||||
}
|
||||
|
||||
public function confirmarCierreSesion(): void
|
||||
{
|
||||
if (! $this->convId) {
|
||||
return;
|
||||
}
|
||||
|
||||
ChatMessage::create([
|
||||
'conversation_id' => $this->convId,
|
||||
'tipo' => 'bot',
|
||||
'tipo_ui' => 'buttons',
|
||||
'contenido' => '¿Seguro que deseas cerrar sesión? Tendrás que volver a ingresar tu correo y código la próxima vez.',
|
||||
'payload' => ['botones' => [
|
||||
['label' => '✅ Sí, cerrar sesión', 'action' => 'sesion.cerrar.confirmar', 'data' => []],
|
||||
['label' => '❌ No, quedarme', 'action' => 'menu.principal', 'data' => []],
|
||||
]],
|
||||
'leido' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
public function cerrarSesion(): void
|
||||
{
|
||||
session()->forget(['chat_user_id', 'chat_conv_id']);
|
||||
@@ -407,6 +426,8 @@ class PublicChat extends Component
|
||||
$action === 'perfil.ver' => $this->verPerfil(),
|
||||
$action === 'asesor.solicitar' => $this->solicitarAsesor(),
|
||||
$action === 'pago.aplicar' => $this->aplicarRecargaValidada($data),
|
||||
$action === 'sesion.cerrar' => $this->confirmarCierreSesion(),
|
||||
$action === 'sesion.cerrar.confirmar' => $this->cerrarSesion(),
|
||||
default => $this->mostrarMenuPrincipal($this->convId),
|
||||
};
|
||||
|
||||
@@ -515,6 +536,7 @@ class PublicChat extends Component
|
||||
['label' => 'Historial', 'action' => 'historial.ver', 'data' => []],
|
||||
['label' => 'Mi Perfil', 'action' => 'perfil.ver', 'data' => []],
|
||||
['label' => 'Hablar con asesor', 'action' => 'asesor.solicitar', 'data' => []],
|
||||
['label' => '🚪 Cerrar sesión', 'action' => 'sesion.cerrar', 'data' => []],
|
||||
]],
|
||||
'leido' => true,
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user