-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathauth.ts
executable file
·47 lines (45 loc) · 1.73 KB
/
auth.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import NextAuth from "next-auth"
import authConfig from "@/auth.config"
import { Gender } from "@prisma/client"
import prismadb from "./lib/prismadb";
import getOrCreateUser from "@/actions/get-or-create-user";
declare module 'next-auth' {
interface User {
username: string,
first_name: string | null | undefined,
last_name: string | null | undefined,
bio: string | null,
gender: Gender | null,
codeforces_id: string | null | undefined,
codeforces_verified: boolean | undefined,
leetcode_id: string | null | undefined,
leetcode_verified: boolean | undefined,
codechef_id: string | null | undefined,
codechef_verified: boolean | undefined,
}
}
export const {handlers, signIn, signOut, auth } = NextAuth({
callbacks: {
async jwt({ token}){
return token;
},
async session({ session, token }) {
const userInfo = await getOrCreateUser( (session.user.name ? session.user.name : "Unnamed"), session.user.email, session.user.image)
session.user.username = userInfo.username
session.user.image = userInfo.avatar
session.user.first_name = userInfo.first_name
session.user.last_name = userInfo.last_name
session.user.bio = userInfo.bio
session.user.gender = userInfo.gender
session.user.codechef_id = userInfo.codechef?.codechef_id
session.user.codeforces_verified = userInfo.codeforces?.verified
session.user.codeforces_id = userInfo.codeforces?.codeforces_id
session.user.codechef_verified = userInfo.codechef?.verified
session.user.leetcode_id = userInfo.leetcode?.leetcode_id
session.user.leetcode_verified = userInfo.leetcode?.verified
return session
},
},
session: { strategy: "jwt"},
...authConfig
});