export const authOptions: AuthOptions = {
pages: {
signIn: '/login',
},
providers: [
CredentialsProvider({
name: 'OTP Login',
credentials: {
mobile: { label: 'Phone', type: 'text', placeholder: 'Phone' },
totp: { label: 'OTP', type: 'text', placeholder: 'OTP' },
session: { type: 'text' },
},
authorize: async (credentials) => {
if (credentials?.mobile && credentials?.totp && credentials?.session) {
const data = await useLoginMutation.fetcher(
graphqlRequestClient,
credentials,
)()
return data.confirmOtp
}
return null
},
}),
],
callbacks: {
jwt: async ({ token, user }) => {
token.jwtToken = (user as unknown as User)?.jwtToken ?? ''
return token
},
session: async ({ session, user, token }) => {
return { ...session, ...user, ...token }
},
},
cookies: {
sessionToken: {
name: TOKEN_NAME,
options: {
httpOnly: true,
sameSite: 'lax',
secure: env.NODE_ENV === 'production',
path: '/',
},
},
},
}
export default NextAuth(authOptions)
export const authOptions: AuthOptions = {
pages: {
signIn: '/login',
},
providers: [
CredentialsProvider({
name: 'OTP Login',
credentials: {
mobile: { label: 'Phone', type: 'text', placeholder: 'Phone' },
totp: { label: 'OTP', type: 'text', placeholder: 'OTP' },
session: { type: 'text' },
},
authorize: async (credentials) => {
if (credentials?.mobile && credentials?.totp && credentials?.session) {
const data = await useLoginMutation.fetcher(
graphqlRequestClient,
credentials,
)()
return data.confirmOtp
}
return null
},
}),
],
callbacks: {
jwt: async ({ token, user }) => {
token.jwtToken = (user as unknown as User)?.jwtToken ?? ''
return token
},
session: async ({ session, user, token }) => {
return { ...session, ...user, ...token }
},
},
cookies: {
sessionToken: {
name: TOKEN_NAME,
options: {
httpOnly: true,
sameSite: 'lax',
secure: env.NODE_ENV === 'production',
path: '/',
},
},
},
}
export default NextAuth(authOptions)