diff --git a/src/app/auth/signin/page.tsx b/src/app/auth/signin/page.tsx new file mode 100644 index 0000000..a505ba7 --- /dev/null +++ b/src/app/auth/signin/page.tsx @@ -0,0 +1,29 @@ +"use client"; + +import { signIn } from "next-auth/react"; +import { useSearchParams } from "next/navigation"; +import { useEffect } from "react"; + +/** + * Custom sign-in page that auto-redirects to Authentik. + * Skips the default NextAuth provider chooser (no "Sign in with Authentik" button). + */ +export default function SignInPage() { + const searchParams = useSearchParams(); + const callbackUrl = searchParams.get("callbackUrl") || "/"; + + useEffect(() => { + void signIn("authentik", { callbackUrl }); + }, [callbackUrl]); + + return ( +
+
+
+

+ Se redirecționează către autentificare... +

+
+
+ ); +} diff --git a/src/middleware.ts b/src/middleware.ts index cd9142f..1b7bac9 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -27,9 +27,13 @@ export async function middleware(request: NextRequest) { ); } - // Page routes: redirect to NextAuth sign-in with callbackUrl - const signInUrl = new URL("/api/auth/signin", request.url); - signInUrl.searchParams.set("callbackUrl", request.url); + // Use NEXTAUTH_URL as base (request.url uses container's internal 0.0.0.0:3000) + const baseUrl = process.env.NEXTAUTH_URL || "https://tools.beletage.ro"; + const callbackUrl = `${baseUrl}${pathname}${request.nextUrl.search}`; + + // Redirect to custom sign-in page (auto-forwards to Authentik) + const signInUrl = new URL("/auth/signin", baseUrl); + signInUrl.searchParams.set("callbackUrl", callbackUrl); return NextResponse.redirect(signInUrl); } @@ -42,6 +46,6 @@ export const config = { * - /favicon.ico, /robots.txt, /sitemap.xml * - Files with extensions (images, fonts, etc.) */ - "/((?!api/auth|_next|favicon\\.ico|robots\\.txt|sitemap\\.xml|.*\\..*).*)", + "/((?!api/auth|auth/signin|_next|favicon\\.ico|robots\\.txt|sitemap\\.xml|.*\\..*).*)", ], };