mirror of
https://github.com/RayLabsHQ/gitea-mirror.git
synced 2025-12-07 03:56:46 +03:00
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { auth } from "@/lib/auth";
|
|
import type { APIRoute } from "astro";
|
|
|
|
export const ALL: APIRoute = async (ctx) => {
|
|
// If you want to use rate limiting, make sure to set the 'x-forwarded-for' header
|
|
// to the request headers from the context
|
|
if (ctx.clientAddress) {
|
|
ctx.request.headers.set("x-forwarded-for", ctx.clientAddress);
|
|
}
|
|
|
|
try {
|
|
return await auth.handler(ctx.request);
|
|
} catch (error) {
|
|
console.error("Auth handler error:", error);
|
|
|
|
// Check if this is an SSO callback error
|
|
const url = new URL(ctx.request.url);
|
|
if (url.pathname.includes('/sso/callback')) {
|
|
// Redirect to error page for SSO errors
|
|
return Response.redirect(
|
|
`${ctx.url.origin}/auth-error?error=sso_callback_failed&error_description=${encodeURIComponent(
|
|
error instanceof Error ? error.message : "SSO authentication failed"
|
|
)}`,
|
|
302
|
|
);
|
|
}
|
|
|
|
// Return a proper error response for other errors
|
|
return new Response(JSON.stringify({
|
|
error: "Internal server error",
|
|
message: error instanceof Error ? error.message : "Unknown error"
|
|
}), {
|
|
status: 500,
|
|
headers: { "Content-Type": "application/json" }
|
|
});
|
|
}
|
|
}; |