34 lines
916 B
JavaScript
34 lines
916 B
JavaScript
import NextAuth from "next-auth";
|
|
import Providers from "next-auth/providers";
|
|
import { Magic } from "@magic-sdk/admin";
|
|
|
|
const magic = new Magic(process.env.MAGIC_SK);
|
|
|
|
export default NextAuth({
|
|
session: {
|
|
jwt: true,
|
|
},
|
|
pages: {
|
|
// override signIn page so we can integrate with Magic
|
|
signIn: "/auth/signin",
|
|
},
|
|
providers: [
|
|
Providers.Credentials({
|
|
name: "Magic Link",
|
|
credentials: {
|
|
didToken: { label: "DID Token", type: "text" },
|
|
},
|
|
async authorize({ didToken }, req) {
|
|
// validate magic DID token
|
|
magic.token.validate(didToken);
|
|
|
|
// fetch user metadata
|
|
const metadata = await magic.users.getMetadataByToken(didToken);
|
|
|
|
// return user info
|
|
return { ...metadata };
|
|
},
|
|
}),
|
|
],
|
|
});
|