chore: fix dev login issue

This commit is contained in:
Nicolas Meienberger 2026-03-18 19:13:00 +01:00
parent 1d6e7dcf65
commit c54ee10f73
2 changed files with 23 additions and 12 deletions

View file

@ -13,26 +13,35 @@ type NodeRuntimeRequest = Request & {
}; };
}; };
export const prepareApiRequest = (request: Request, timeoutMs: number) => { type RequestInitWithDuplex = RequestInit & {
const nodeRequest = request as NodeRuntimeRequest; duplex?: "half";
nodeRequest.runtime?.node?.res?.setTimeout(timeoutMs); };
export const prepareApiRequest = (request: NodeRuntimeRequest, timeoutMs: number) => {
request.runtime?.node?.res?.setTimeout(timeoutMs);
if (config.trustProxy && request.headers.has("x-forwarded-for")) { if (config.trustProxy && request.headers.has("x-forwarded-for")) {
return request.clone(); return request.clone();
} }
const remoteAddress = nodeRequest.ip; const remoteAddress = request.ip;
if (remoteAddress) { const headers = new Headers(request.headers);
const headers = new Headers(request.headers);
headers.set("x-forwarded-for", remoteAddress);
return new Request(request, { headers }); if (remoteAddress) {
headers.set("x-forwarded-for", remoteAddress);
} else {
headers.delete("x-forwarded-for");
} }
const headers = new Headers(request.headers); const init: RequestInitWithDuplex = {
headers.delete("x-forwarded-for"); method: request.method,
headers,
body: request.body,
signal: request.signal,
duplex: request.body ? "half" : undefined,
};
return new Request(request, { headers }); return new Request(request.url, init);
}; };
const handle = ({ request }: { request: Request }) => const handle = ({ request }: { request: Request }) =>

View file

@ -18,7 +18,9 @@ import { fromAny } from "@total-typescript/shoehorn";
import { repositoriesService } from "~/server/modules/repositories/repositories.service"; import { repositoriesService } from "~/server/modules/repositories/repositories.service";
const setup = () => { const setup = () => {
const resticBackupMock = mock(() => Promise.resolve({ exitCode: 0, summary: generateBackupOutput(), error: "" })); const resticBackupMock = mock((_: SafeSpawnParams) =>
Promise.resolve({ exitCode: 0, summary: generateBackupOutput(), error: "" }),
);
const resticForgetMock = mock(() => Promise.resolve({ success: true, data: null })); const resticForgetMock = mock(() => Promise.resolve({ success: true, data: null }));
const resticCopyMock = mock(() => Promise.resolve({ success: true, output: "" })); const resticCopyMock = mock(() => Promise.resolve({ success: true, output: "" }));
const refreshStatsMock = mock(() => const refreshStatsMock = mock(() =>