Finanzmanager/src/Views/banking/tan.php
fds2610-bot 1cdb59b68b Fix #115: TAN-Anfrage – Startcode hervorheben
Nennt die Bank bei der TAN-Abfrage einen Startcode für den TAN-Generator,
geht er im Fließtext leicht unter. StartcodeErkennung erkennt ihn über
einen pro Bankverbindung konfigurierbaren Beispielsatz (Ziffernfolge =
Platzhalter für den Code) und zeigt den Fund fett, zentriert und in
eigener Zeile. BankFreitext löst dafür die bisherige Klartext-Aufbereitung
aus FinTsUeberweisung::vopHinweis() heraus, damit TAN-Anfrage und
VoP-Rückmeldung dieselbe HTML-zu-Klartext-Umwandlung nutzen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-04 20:21:56 +02:00

97 lines
3.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
use Finanzmanager\View;
/**
* Die TAN-Maske. Sie steht zwischen zwei Requests: Der Dialog mit der Bank ist
* offen und liegt so lange in der Sitzung, bis die Freigabe da ist oder der
* Abruf abgebrochen wird.
*
* @var array<string,mixed> $tan
* @var string $meldung
* @var list<string> $protokoll
* @var array{nummer: int, gesamt: int, name: string}|null $sammelabruf
* @var string $csrfToken
*/
$entkoppelt = ($tan['entkoppelt'] ?? false) === true;
$sammelabruf = $sammelabruf ?? null;
include __DIR__ . '/../layout/kopf.php';
?>
<div class="kachel einzeln">
<header>
<h2><?= $entkoppelt ? 'Freigabe im Banking-Gerät' : 'TAN eingeben' ?></h2>
<p class="kachelhinweis"><?= View::h($tan['bezeichnung'] ?? 'Abruf') ?></p>
</header>
<?php if ($sammelabruf !== null): ?>
<p class="feldhinweis sammelabrufstand">
Alle Umsätze abrufen: Bankverbindung <?= (int)$sammelabruf['nummer'] ?>
von <?= (int)$sammelabruf['gesamt'] ?> – <strong><?= View::h($sammelabruf['name']) ?></strong>
</p>
<?php endif; ?>
<p class="hinweis"><?= View::h($meldung) ?></p>
<?php if (($tan['hinweis'] ?? '') !== ''): ?>
<?php /* Bereits sicheres HTML aus StartcodeErkennung::hervorheben() –
der erkannte Startcode steht darin fett und zentriert. */ ?>
<p class="tanhinweis"><?= $tan['hinweis'] ?></p>
<?php endif; ?>
<?php if (($tan['medium'] ?? '') !== ''): ?>
<p class="feldhinweis">TAN-Medium: <?= View::h($tan['medium']) ?></p>
<?php endif; ?>
<?php if (!empty($tan['bild_daten'])): ?>
<?php /* photoTAN: Das Bild kommt als Datenadresse, nicht als Datei –
es gehört zu genau diesem Dialog und ist danach wertlos. */ ?>
<img class="tanbild" alt="TAN-Grafik der Bank"
src="data:<?= View::h($tan['bild_typ'] ?? 'image/png') ?>;base64,<?= View::h($tan['bild_daten']) ?>">
<?php endif; ?>
<form method="post" action="/banking/tan" class="formular">
<input type="hidden" name="csrf_token" value="<?= View::h($csrfToken) ?>">
<?php if ($entkoppelt): ?>
<p class="feldhinweis">
Die Bank hat die Freigabe an dein Banking-Gerät geschickt. Dort bestätigen und
anschließend hier prüfen lassen – der Abruf läuft dann weiter.
</p>
<input type="hidden" name="tan" value="">
<div class="knopfleiste">
<button type="submit" class="knopf primaer">Freigabe prüfen</button>
</div>
<?php else: ?>
<label for="tan">TAN</label>
<input type="text" id="tan" name="tan" inputmode="numeric" autocomplete="one-time-code"
autofocus required>
<div class="knopfleiste">
<button type="submit" class="knopf primaer">TAN senden</button>
</div>
<?php endif; ?>
</form>
<form method="post" action="/banking/tan/abbrechen" class="formular">
<input type="hidden" name="csrf_token" value="<?= View::h($csrfToken) ?>">
<div class="knopfleiste">
<?php if ($sammelabruf !== null && $sammelabruf['nummer'] < $sammelabruf['gesamt']): ?>
<?php /* Nur diese Bank auslassen – die übrigen werden trotzdem abgerufen. */ ?>
<button type="submit" name="weiter" value="1" class="knopf">Diese Bank überspringen</button>
<?php endif; ?>
<button type="submit" class="knopf">Abruf abbrechen</button>
</div>
</form>
</div>
<?php if ($protokoll !== []): ?>
<div class="kachel einzeln">
<header><h2>Bisheriger Verlauf</h2></header>
<pre class="protokolltext"><?php foreach ($protokoll as $zeile): ?><?= View::h($zeile) ?>
<?php endforeach; ?></pre>
</div>
<?php endif; ?>
<?php include __DIR__ . '/../layout/fuss.php'; ?>