sendou.ink/pages/api/auth/[...nextauth].ts
Kalle (Sendou) a0bf6ca6fd upgrade deps
2021-03-23 13:05:47 +02:00

51 lines
1.3 KiB
TypeScript

// @ts-nocheck
import { NextApiRequest, NextApiResponse } from "next";
import NextAuth, { NextAuthOptions } from "next-auth";
import Providers from "next-auth/providers";
import prisma from "prisma/client";
const options: NextAuthOptions = {
providers: [
Providers.Discord({
clientId: process.env.DISCORD_CLIENT_ID!,
clientSecret: process.env.DISCORD_CLIENT_SECRET!,
// @ts-ignore
scope: "identify",
}),
],
jwt: {
secret: process.env.JWT_SECRET!,
},
callbacks: {
session: async (_, user) => {
return Promise.resolve(user);
},
jwt: async (token, user, _, profile) => {
// no profile means callback wasn't called because of a sign in
if (!profile) return Promise.resolve(token);
const userFromDb = await prisma.user.upsert({
create: {
discordId: profile.id,
username: profile.username,
discriminator: profile.discriminator,
discordAvatar: profile.avatar,
},
update: {
username: profile.username,
discriminator: profile.discriminator,
discordAvatar: profile.avatar,
},
where: {
discordId: profile.id,
},
});
return Promise.resolve(userFromDb);
},
},
};
export default (req: NextApiRequest, res: NextApiResponse) =>
NextAuth(req, res, options);