import baseUrl from "@/config/base-url"; import { authService } from "@/lib/api/example/auth/service"; import Credentials from "next-auth/providers/credentials"; import { AuthOptions } from "next-auth"; function randomToken() { return Math.random().toString(36).substring(2) + Date.now().toString(36); } const isMockMode = process.env.NEXT_PUBLIC_ENABLE_MOCK_MODE === "true"; export const authOptions: AuthOptions = { providers: [ Credentials({ name: "Credentials", credentials: { email: { label: "Email", type: "text" }, password: { label: "Password", type: "password" }, }, async authorize(credentials) { console.log("credentials", credentials); if (!credentials?.email || !credentials?.password) { throw new Error("Email ve şifre gereklidir."); } // Eğer mock mod aktifse backend'e gitme if (isMockMode) { return { id: credentials.email, name: credentials.email.split("@")[0], email: credentials.email, accessToken: randomToken(), refreshToken: randomToken(), }; } // Normal mod: backend'e istek at const res = await authService.login({ email: credentials.email, password: credentials.password, }); console.log("res", res); const response = res; // Backend returns ApiResponse // Structure: { data: { accessToken, refreshToken, expiresIn, user }, message, statusCode } if (!res.success || !response?.data?.accessToken) { throw new Error(response?.message || "Giriş başarısız"); } const { accessToken, refreshToken, user } = response.data; return { id: user.id, name: user.firstName ? `${user.firstName} ${user.lastName || ""}`.trim() : user.email.split("@")[0], email: user.email, accessToken, refreshToken, roles: user.roles || [], }; }, }), ], callbacks: { async jwt({ token, user, account, profile }: any) { console.log('[DEBUG-AUTH] JWT Callback Triggered', { hasUser: !!user, tokenKeys: Object.keys(token) }); if (user) { console.log('[DEBUG-AUTH] JWT User details:', { id: user.id, email: user.email, hasAccessToken: !!user.accessToken }); token.accessToken = user.accessToken; token.refreshToken = user.refreshToken; token.id = user.id; token.roles = user.roles; } return token; }, async session({ session, token }: any) { console.log('[DEBUG-AUTH] Session Callback Triggered', { hasToken: !!token, sessionKeys: Object.keys(session) }); if (token) { console.log('[DEBUG-AUTH] Session Token details:', { id: token.id, hasAccessToken: !!token.accessToken }); session.user.id = token.id; session.user.roles = token.roles; session.accessToken = token.accessToken; session.refreshToken = token.refreshToken; } return session; }, }, pages: { signIn: "/signin", error: "/signin", }, session: { strategy: "jwt" }, secret: process.env.NEXTAUTH_SECRET, };