diff --git a/frontend/messages/en.json b/frontend/messages/en.json index d9157e19..3749cfb1 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -562,5 +562,6 @@ "deny": "Deny", "approve": "Approve", "or": "or", - "visit_and_enter": "Visit {url} and enter:" + "visit_and_enter": "Visit {url} and enter:", + "device_login_request_expired": "Your QR-Code has expired. Please start the sign-in process again." } diff --git a/frontend/src/routes/login/alternative/device/+page.svelte b/frontend/src/routes/login/alternative/device/+page.svelte index 6f177873..aeefb2ed 100644 --- a/frontend/src/routes/login/alternative/device/+page.svelte +++ b/frontend/src/routes/login/alternative/device/+page.svelte @@ -95,6 +95,11 @@ } // Stop retrying when the server reports a non-transient failure clearTimers(); + + if (isAxiosError(error) && error.response?.status === 401) { + errorMessage = m.device_login_request_expired(); + return; + } errorMessage = getAxiosErrorMessage(error); } }