mirror of
https://github.com/anomalyco/opencode.git
synced 2026-05-31 21:50:53 +00:00
fix(core): allow colons inside passwords (#29576)
Co-authored-by: Kit Langton <kit.langton@gmail.com>
This commit is contained in:
parent
202ec12056
commit
72d008bd5c
2 changed files with 18 additions and 4 deletions
|
|
@ -63,11 +63,11 @@ function decodeCredential(input: string) {
|
|||
Effect.match({
|
||||
onFailure: emptyCredential,
|
||||
onSuccess: (header) => {
|
||||
const parts = header.split(":")
|
||||
if (parts.length !== 2) return emptyCredential()
|
||||
const separator = header.indexOf(":")
|
||||
if (separator === -1) return emptyCredential()
|
||||
return {
|
||||
username: parts[0],
|
||||
password: Redacted.make(parts[1]),
|
||||
username: header.slice(0, separator),
|
||||
password: Redacted.make(header.slice(separator + 1)),
|
||||
}
|
||||
},
|
||||
}),
|
||||
|
|
|
|||
|
|
@ -406,6 +406,20 @@ describe("HttpApi UI fallback", () => {
|
|||
}),
|
||||
)
|
||||
|
||||
it.live("accepts basic auth passwords containing colons for the web UI", () =>
|
||||
Effect.gen(function* () {
|
||||
const response = yield* uiApp({
|
||||
password: "sec:ret",
|
||||
username: "opencode",
|
||||
disableEmbeddedWebUi: true,
|
||||
}).request("/", {
|
||||
headers: { authorization: `Basic ${btoa("opencode:sec:ret")}` },
|
||||
})
|
||||
|
||||
expect(response.status).toBe(200)
|
||||
}),
|
||||
)
|
||||
|
||||
// Regression for #25698 (Ope): the browser fetches the PWA manifest and
|
||||
// its icons via flows that don't carry app-managed credentials (the
|
||||
// `<link rel="manifest">` request is not under page-auth control), so the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue