@@ -3,12 +3,22 @@ import NextAuth, { DefaultSession } from "next-auth"
3
3
import GitHub from "next-auth/providers/github"
4
4
import Google from "next-auth/providers/google"
5
5
import Credentials from "next-auth/providers/credentials"
6
+ import EmailProvider from "next-auth/providers/nodemailer" ;
6
7
import { PrismaAdapter } from "@auth/prisma-adapter"
7
8
import { prisma } from "@/prisma" ;
8
- import { AUTH_GITHUB_CLIENT_ID , AUTH_GITHUB_CLIENT_SECRET , AUTH_GOOGLE_CLIENT_ID , AUTH_GOOGLE_CLIENT_SECRET , AUTH_LOOPS_KEY , AUTH_LOOPS_TRANSACTIONAL_ID , AUTH_SECRET , AUTH_URL } from "./lib/environment" ;
9
+ import {
10
+ AUTH_GITHUB_CLIENT_ID ,
11
+ AUTH_GITHUB_CLIENT_SECRET ,
12
+ AUTH_GOOGLE_CLIENT_ID ,
13
+ AUTH_GOOGLE_CLIENT_SECRET ,
14
+ AUTH_SECRET ,
15
+ AUTH_URL ,
16
+ EMAIL_FROM ,
17
+ SMTP_CONNECTION_URL
18
+ } from "./lib/environment" ;
9
19
import { User } from '@sourcebot/db' ;
10
20
import 'next-auth/jwt' ;
11
- import type { EmailConfig , EmailUserConfig , Provider } from "next-auth/providers" ;
21
+ import type { Provider } from "next-auth/providers" ;
12
22
import { verifyCredentialsRequestSchema , verifyCredentialsResponseSchema } from './lib/schemas' ;
13
23
14
24
export const runtime = 'nodejs' ;
@@ -27,37 +37,6 @@ declare module 'next-auth/jwt' {
27
37
}
28
38
}
29
39
30
- function Loops ( config : EmailUserConfig & { transactionalId ?: string } ) : EmailConfig {
31
- return {
32
- id : "loops" ,
33
- type : "email" ,
34
- name : "Loops" ,
35
-
36
- maxAge : 24 * 60 * 60 ,
37
- async sendVerificationRequest ( params ) {
38
- const { identifier : to , provider, url } = params ;
39
- const res = await fetch ( "https://app.loops.so/api/v1/transactional" , {
40
- method : "POST" ,
41
- headers : {
42
- Authorization : `Bearer ${ provider . apiKey } ` ,
43
- "Content-Type" : "application/json" ,
44
- } ,
45
- body : JSON . stringify ( {
46
- transactionalId : config . transactionalId ,
47
- email : to ,
48
- dataVariables : {
49
- url : url ,
50
- } ,
51
- } ) ,
52
- } )
53
- if ( ! res . ok ) {
54
- throw new Error ( "Loops Send Error: " + JSON . stringify ( await res . json ( ) ) )
55
- }
56
- } ,
57
- options : config ,
58
- }
59
- }
60
-
61
40
const providers : Provider [ ] = [
62
41
GitHub ( {
63
42
clientId : AUTH_GITHUB_CLIENT_ID ,
@@ -67,10 +46,6 @@ const providers: Provider[] = [
67
46
clientId : AUTH_GOOGLE_CLIENT_ID ,
68
47
clientSecret : AUTH_GOOGLE_CLIENT_SECRET ,
69
48
} ) ,
70
- Loops ( {
71
- apiKey : AUTH_LOOPS_KEY ,
72
- transactionalId : AUTH_LOOPS_TRANSACTIONAL_ID ,
73
- } ) ,
74
49
Credentials ( {
75
50
credentials : {
76
51
email : { } ,
@@ -103,22 +78,16 @@ const providers: Provider[] = [
103
78
image : user . image ,
104
79
}
105
80
}
106
- } )
81
+ } ) ,
82
+ ...( SMTP_CONNECTION_URL && EMAIL_FROM ? [
83
+ EmailProvider ( {
84
+ server : SMTP_CONNECTION_URL ,
85
+ from : EMAIL_FROM ,
86
+ maxAge : 60 * 10 ,
87
+ } ) ,
88
+ ] : [ ] ) ,
107
89
] ;
108
90
109
- // @see : https://authjs.dev/guides/pages/signin
110
- export const providerMap = providers
111
- . map ( ( provider ) => {
112
- if ( typeof provider === "function" ) {
113
- const providerData = provider ( )
114
- return { id : providerData . id , name : providerData . name }
115
- } else {
116
- return { id : provider . id , name : provider . name }
117
- }
118
- } )
119
- . filter ( ( provider ) => provider . id !== "credentials" ) ;
120
-
121
-
122
91
const useSecureCookies = AUTH_URL ?. startsWith ( "https://" ) ?? false ;
123
92
const hostName = AUTH_URL ? new URL ( AUTH_URL ) . hostname : "localhost" ;
124
93
0 commit comments