Support password-fallbackPassword array in requireBasicAuth (#27237)

GitOrigin-RevId: 33b15a05996bfa0190041f347772867a9667e2ca
This commit is contained in:
Domagoj Kriskovic
2025-07-22 08:05:51 +00:00
committed by Copybot
parent 5d79cf18c0
commit 868d562d96
2 changed files with 343 additions and 1 deletions
@@ -36,7 +36,22 @@ function send401WithChallenge(res) {
function checkCredentials(userDetailsMap, user, password) {
const expectedPassword = userDetailsMap.get(user)
const userExists = userDetailsMap.has(user) && expectedPassword // user exists with a non-null password
const isValid = userExists && tsscmp(expectedPassword, password)
let isValid = false
if (userExists) {
if (Array.isArray(expectedPassword)) {
const isValidPrimary = Boolean(
expectedPassword[0] && tsscmp(expectedPassword[0], password)
)
const isValidFallback = Boolean(
expectedPassword[1] && tsscmp(expectedPassword[1], password)
)
isValid = isValidPrimary || isValidFallback
} else {
isValid = tsscmp(expectedPassword, password)
}
}
if (!isValid) {
logger.err({ user }, 'invalid login details')
}