0

I am trying to use next-auth with my backend but it doesn't work. I use version 4 with typescript. The error is {error: 'window is not defined', status: 200, ok: true, url: null} Why?????. Thanks a lot.

My custom API /login result is

{
    "data": {
        "username": "test",
        "users": {
            "id": 2,
            "username": "test",
            "email": "test@test.com",
            "createdAt": "2021-05-24",
            "updatedAt": "2021-05-24",
            "name": "John Smith",
            "id_groups": 99,
            "groups": "guest",
            "avatar": null
        },
        "timestamp": 1646808511,
        "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiG9.eyJpc3MiOiJodHRwOlwvXC90d2luYXBwLml0IiwiYXVkIjoiaHR0cDpcL1wvdHdpbmFwcC5pdCIsImlhdCI6MTM1Njk5OTUyNCwibmJmIjoxMzU3MDAwMDAwLCJleHAiOjE2NDY4MTIxMTEsImRhdGEiOiJtYXJjb2JvbmNpIn0.R1aAX99GHmoSPRKv4Vnzso8iRjUhrDWhPEdq4oql_r0"
    },
    "status": "",
    "code": 200
}

Now, I'm try to configure next auth

import NextAuth from "next-auth";
import CredentialsProvider from "next-auth/providers/credentials";
import gApi from "../../../api/gApi";


export default NextAuth({
  session: {
    strategy: "jwt",
  },  
  providers: [
    CredentialsProvider({
      name: "credentials",
      credentials: {
        username: {label: "Username",type: "text", placeholder: "username"},
        password: { label: "Passwort", type: "password" },
      },
      async authorize(credentials) {
        const resp = await gApi.post("/login", JSON.stringify(credentials));
        const user =  resp.data;
        console.log('CALL MY API');
        console.log(resp);
        if ( resp.status && user) {
          return user; 
         }
        return null;
      },
    }),
  ],

  callbacks: {
    async jwt({ token, user, account, isNewUser }) {
      if (user) {
        if (user.jwt) {
          token = { accessToken: user.jwt };
        }
      }
      return token;
    },

    async session({ session, token }) { // this token return above jwt()
      session.accessToken = token.accessToken;
      return session;
    },
  },

  pages: {
    signIn: "/auth/Login",
  },
});

In my login page I have e simple form and i call with:

 const onSubmit: SubmitHandler<FormData> = async data => {

        const resp: any = await signIn("credentials", {
            username: data.username,
            password: data.password,
            redirect: false,
          }); 

        console.log('RESPO signin');
        console.log(resp);
        
        if (resp && !resp.error) {
            router.replace('/')
        } else return;

    }

Bonci Marco
  • 301
  • 2
  • 5
  • 17

0 Answers0