17 Commits
Author SHA1 Message Date
bjoernpoettkerandClaude Opus 5 4cd0da4a8a Add detailed debug logging for the login flow
The login flow was near-silent: three info lines with no way to see why a
session was considered expired or what happened to the cookies. Debugging
a failing login meant guessing.

Every login step now logs on debug level with a `phase` field: the login
page fetch, the extracted nonce, the POST to /login/api/login.php, the
session check, and any request retried after a re-login. Each of those
requests is bracketed by a cookie snapshot taken before it is sent and one
taken after, plus a delta of added/changed/removed cookies. The "before"
snapshot is logged prior to sending, so it survives a hanging request.

isLoginRequiredResponse() is split so the criterion that matched
(status-401, login-markup, ...) can be reported instead of just a boolean.

Secrets stay out of the log: the password is replaced by ***, and cookie
values - including those in the raw Set-Cookie header - are truncated to
their first four characters plus length. That still shows whether a
session id changed without putting the session itself in the log.

Detail logging is strictly debug-level via logLoginDetail(); the existing
logDebug() falls back to info, which would flood a plain info logger. When
no debug logger is attached, no snapshot is taken and nothing is
serialized.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-07 20:05:02 +02:00
bjoernpoettkerandClaude Opus 5 b844b772b8 Detect expired session only via login page markup
The session check treated any response containing "Anmeldung" or
"Einloggen" as an expired session. Regular content pages (e.g. the FAQ)
mention these words in body text, which triggered a needless re-login and
returned the login page instead of the requested content.

Detection now relies on the status code and isLoginPageText() alone.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-07 17:36:05 +02:00
bjoernpoettker f83830dedf Adjust employee name column parsing 2026-06-12 16:05:09 +02:00
bjoernpoettker f7401ccf18 Add employee active flag 2026-06-09 11:40:09 +02:00
bjoernpoettker b8da2a821f Fix login auto-retry deadlock 2026-06-08 21:07:42 +02:00
bjoernpoettker 5cb93b3258 Send login payload as JSON 2026-06-08 08:57:59 +02:00
bjoernpoettker 27d28a8767 Add employee livesearch lookup 2026-06-07 15:04:50 +02:00
bjoernpoettker b6180867ef Add article livesearch lookup 2026-06-07 14:53:44 +02:00
bjoernpoettker 68bb6ce061 Add article category lookup 2026-06-07 14:45:57 +02:00
bjoernpoettker a5608ab461 Add article unit lookup 2026-06-07 14:37:51 +02:00
bjoernpoettker 8ac9b1e58a Add company settings lookup 2026-06-07 14:23:04 +02:00
bjoernpoettker 2b5481f7e2 Add normalized kunden2 lookup 2026-06-07 14:11:57 +02:00
bjoernpoettker 020d36a0a1 Add machine livesearch lookup 2026-06-07 13:54:54 +02:00
bjoernpoettker 24c6c9e017 Add machine category lookup 2026-06-07 13:40:12 +02:00
bjoernpoettker cd89a30631 Use redirect login flow only 2026-05-25 11:37:21 +02:00
bjoernpoettker cf6bc1b5cc Add invoice and customer API methods 2026-05-23 11:17:05 +02:00
bjoernpoettker 921c67503b Include build output for git installs 2026-05-21 21:20:20 +02:00