Revision 8b4dd266
Von Moritz Bunkus vor mehr als 2 Jahren hinzugefügt
SL/DB/Helper/Mappings.pm | ||
---|---|---|
226 | 226 |
units => 'unit', |
227 | 227 |
units_language => 'units_language', |
228 | 228 |
user_preferences => 'user_preference', |
229 |
validity_tokens => 'ValidityToken', |
|
229 | 230 |
vendor => 'vendor', |
230 | 231 |
warehouse => 'warehouse', |
231 | 232 |
); |
Auch abrufbar als: Unified diff
proof of concept: Formular-Gültigkeit beim Buchen von Verkaufsrechnungen
Ziel: verhindern, dass eine noch nicht gebuchte Rechnung durch
Verwendung des »Zurück«-Buttons im Browser mehrfach gebucht werden
kann.
Implementation: Beim Neuanlegen einer Rechnung wird ein einmaliges
Gültigkeitstoken mit einem Scope (»Verkaufsrechnung buchen«)
erzeugt. Dieses hat eine Laufzeit von 24h. Es wird als Hidden-Variable
im Formular mitgeschleift, sofern noch keine Datenbank-ID existiert,
die Rechnung also noch nicht gebucht wurde.
Wird die Rechnung gebucht, so wird zuerst überprüft, ob das vom
Browser mitgeschickte Token noch gültig ist:
1. ob es das Token mit demselben Scope in der Datenbank noch gibt
2. ob das Ablaufdatum des Tokens noch nicht erreicht ist
Falls ja, wird die Rechnung gebucht und das Token aus der Datenbank
und dem Formular entfernt. Es ist somit entwertet und kann nicht
erneut zum Buchen verwendet werden, da es bei der Prüfung oben Punkt 1
verletzt.
Falls nein, wird hingegen eine Fehlermeldung angezeigt, dass das
Formular nicht mehr gültig ist. Das kann man auch durch Verwenden von
Funktionen wie »Erneuern« nicht umgehen: das Fomular mit der
ungebuchten Rechnung ist jetzt »tot«.