diff --git a/pages/api/auth/[...nextauth].js b/pages/api/auth/[...nextauth].js new file mode 100644 index 0000000..1cc8594 --- /dev/null +++ b/pages/api/auth/[...nextauth].js @@ -0,0 +1,57 @@ +import NextAuth from 'next-auth' +import Providers from 'next-auth/providers' +import axios from 'axios' + +const options = { + providers: [ + Providers.Credentials({ + name: 'Credentials', + credentials: { + username: {label: 'Email', type: 'email', placeholder: 'email@exemple.net'}, + password: {label: 'Password', type: 'password'} + }, + authorize: async credentials => { + try { + const user = await axios.post(`${process.env.NEXT_PUBLIC_API_URL}/auth/local`, { + identifier: credentials.username, + password: credentials.password + }) + if (user.data) { + return user.data + } + + return null + } catch (error) { + const errorMessage = error.response.data.message[0].messages[0].message + throw new Error(errorMessage) + } + } + }) + ], + database: process.env.NEXT_PUBLIC_DATABASE_URL, + session: { + jwt: true + }, + callbacks: { + jwt: async (token, user) => { + if (user) { + token.jwt = user.jwt + token.user = user.user + } + + return Promise.resolve(token) + }, + session: async (session, token) => { + session.jwt = token.jwt + session.user = token.user + return Promise.resolve(session) + } + }, + pages: { + signIn: '/kont', + error: '/kont' + } +} +const Auth = (request, response) => + NextAuth(request, response, options) +export default Auth