diff --git a/server/index.js b/server/index.js index 3f07c46..d59e5b7 100644 --- a/server/index.js +++ b/server/index.js @@ -958,6 +958,9 @@ async function handleRequestAccess(req, res, body) { } const selectedMethod = resolveAuthMethodForUser(user, requestedMethod); + if (requestedMethod && !selectedMethod) { + return sendError(res, 400, "auth.method_unavailable", "Gewaehlte Bestaetigungsart ist fuer dieses Konto nicht verfuegbar"); + } if (!selectedMethod) { const token = await issueEmailToken(user.id, user.status === "active" ? "login" : "verify"); const actionPath = user.status === "active" ? "/login?loginToken=" : "/login?verifyToken="; @@ -978,7 +981,11 @@ async function handleRequestAccess(req, res, body) { message.text, message.html ); - await appendAudit("auth.request_access", user, { status: user.status, method: "fallback-mail" }); + await appendAudit("auth.request_access", user, { + status: user.status, + requestedMethod: requestedMethod || null, + method: "fallback-mail" + }); return sendJson(res, 200, { ok: true, method: "smtp-link", @@ -1039,7 +1046,12 @@ async function handleRequestAccess(req, res, body) { return sendError(res, 400, "auth.method_invalid", "Unbekannte Bestaetigungsart"); } - await appendAudit("auth.request_access", user, { status: user.status }); + await appendAudit("auth.request_access", user, { + status: user.status, + requestedMethod: requestedMethod || null, + method: selectedMethod.id, + challengeType + }); return sendJson(res, 200, { ok: true, method: selectedMethod.id,