File size: 1,066 Bytes
b841f1a
 
 
3ba9c0c
 
b841f1a
 
 
 
 
 
3ba9c0c
 
 
b841f1a
 
3ba9c0c
b841f1a
 
 
 
 
 
 
 
 
 
1d92adf
b841f1a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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, { type DefaultSession } from 'next-auth';
import GitHub from 'next-auth/providers/github';
import Google from 'next-auth/providers/google';

declare module 'next-auth' {
	interface Session {
		user: {
			/** The user's id. */
			id: string;
		} & DefaultSession['user'];
	}
}

export const {
	handlers: { GET, POST },
	auth,
} = NextAuth({
	providers: [
		GitHub,
		Google({
			clientId: process.env.GOOGLE_CLIENT_ID!,
			clientSecret: process.env.GOOGLE_SECRET!,
		}),
	],
	callbacks: {
		jwt({ token, profile }) {
			if (profile) {
				token.id = profile.id || profile.sub;
				token.image = profile.avatar_url || profile.picture;
			}
			return token;
		},
		session: ({ session, token }) => {
			if (session?.user && token?.id) {
				session.user.id = String(token.id);
			}
			return session;
		},
		authorized({ auth }) {
			return !!auth?.user; // this ensures there is a logged in user for -every- request
		},
	},
	pages: {
		signIn: '/sign-in', // overrides the next-auth default signin page https://authjs.dev/guides/basics/pages
	},
});