import { type NextRequest, NextResponse } from "next/server" import { AuthError } from "next-auth" import { logger } from "@scandic-hotels/common/logger" import { dtmcApiCallback } from "@/constants/routes/dtmc" import { internalServerError, serviceUnavailable } from "@/server/errors/next" import { getPublicURL } from "@/server/utils" import { signIn } from "@/auth.dtmc" export async function GET(request: NextRequest) { const publicURL = getPublicURL(request) try { const redirectUrl = await signIn( "microsoft-entra-id", { redirectTo: `${publicURL}${dtmcApiCallback}`, redirect: false, }, { prompt: "login", } ) if (redirectUrl) { logger.debug(`[dtmc] redirecting to: ${redirectUrl}`) return NextResponse.redirect(redirectUrl) } else { logger.error(`[dtmc] missing redirectUrl response from signIn()`) return internalServerError( "[dtmc] Missing redirect URL from authentication service" ) } } catch (error) { if (error instanceof AuthError) { logger.error("signInAuthError", { signInAuthError: error }) return serviceUnavailable( "[dtmc] Microsoft authentication service unavailable" ) } else { logger.error("signInError", { signInError: error }) return internalServerError( "[dtmc] Unexpected error during authentication" ) } } }