Next.js Discord

Discord Forum

I have an auth error with api route s. - NextAuth

Unanswered
Bolognese posted this in #help-forum
Open in Discord
BologneseOP
My auth.ts (authOptions);

import { NextAuthOptions, getServerSession } from "next-auth";
import Auth0Provider from "next-auth/providers/auth0";
import { db } from "./db";
import { PrismaAdapter } from "@next-auth/prisma-adapter";
import { nanoid } from "nanoid";

export const authOptions: NextAuthOptions = {
  adapter: PrismaAdapter(db),
  secret: process.env.NEXTAUTH_SECRET,
  session: {
    strategy: "jwt",
  },
  pages: {
    signIn: "/giris",
  },
  providers: [
    Auth0Provider({
      clientId: process.env.AUTH0_CLIENT_ID!,
      clientSecret: process.env.AUTH0_CLIENT_SECRET!,
      issuer: process.env.AUTH0_ISSUER,
    }),
  ],
  callbacks: {
    async session({ token, session }) {
      if (token) {
        session.user.id = token.id;
        session.user.name = token.name;
        session.user.email = token.email;
        session.user.image = token.picture;
        session.user.username = token.username;
      }

      return session;
    },

    async jwt({ token, user }) {
      const dbUser = await db.user.findFirst({
        where: {
          email: token.email,
        },
      });

      if (!dbUser) {
        token.id = user!.id;
        return token;
      }

      if (!dbUser.username) {
        await db.user.update({
          where: {
            id: dbUser.id,
          },
          data: {
            username: nanoid(10),
          },
        });
      }

      return {
        id: dbUser.id,
        name: dbUser.name,
        email: dbUser.email,
        picture: dbUser.image,
        username: dbUser.username,
      };
    },
    redirect() {
      return "/";
    },
  },
};

export const getAuthSession = () => getServerSession(authOptions);



Error is basicly axios returns me 401 error which it should when i am not logged in, but the problem is that i logged in.

1 Reply

BologneseOP
API Route;

import { getAuthSession } from "@/lib/auth";
import { db } from "@/lib/db";
import { NextRequest, NextResponse } from "next/server";

export async function GET() {
  const session = await getAuthSession();

  if (!session?.user) {
    return new Response("Unauthorized", { status: 401 });
  }

  try {
    const cezalar = await db.cezalar.findMany();
    return NextResponse.json(cezalar);
  } catch (error) {
    return new Response(
      "Veriler çekilemedi lütfen bir süre sonra tekrar deneyiniz.",
      {
        status: 500,
      }
    );
  }
}


the page that calls get request;

import axios from "axios";
import { Ceza, columns } from "./columns";
import { DataTable } from "./data-table";

async function getData(): Promise<Ceza[]> {
  const response = await axios.get("http://localhost:3000/api/ceza/list");

  try {
    return response.data;
  } catch (error) {
    console.error("Error parsing JSON response:", error);
    throw error;
  }
}

export default async function Anasayfa() {
  const data = await getData();

  return (
    <div className="container mx-auto py-10">
      <DataTable columns={columns} data={data} />
    </div>
  );
}