43 lines
997 B
TypeScript
43 lines
997 B
TypeScript
import type { NextAuthConfig } from 'next-auth'
|
|
|
|
export const authConfig = {
|
|
secret: process.env.AUTH_SECRET,
|
|
pages: {
|
|
signIn: '/login',
|
|
newUser: '/signup'
|
|
},
|
|
callbacks: {
|
|
async authorized({ auth, request: { nextUrl } }) {
|
|
const isLoggedIn = !!auth?.user
|
|
const isOnLoginPage = nextUrl.pathname.startsWith('/login')
|
|
const isOnSignupPage = nextUrl.pathname.startsWith('/signup')
|
|
|
|
if (isLoggedIn) {
|
|
if (isOnLoginPage || isOnSignupPage) {
|
|
return Response.redirect(new URL('/', nextUrl))
|
|
}
|
|
}
|
|
|
|
return true
|
|
},
|
|
async jwt({ token, user }) {
|
|
if (user) {
|
|
token = { ...token, id: user.id }
|
|
}
|
|
|
|
return token
|
|
},
|
|
async session({ session, token }) {
|
|
if (token) {
|
|
const { id } = token as { id: string }
|
|
const { user } = session
|
|
|
|
session = { ...session, user: { ...user, id } }
|
|
}
|
|
|
|
return session
|
|
}
|
|
},
|
|
providers: []
|
|
} satisfies NextAuthConfig
|