Skip to content

Commit 9e844eb

Browse files
Merge pull request #15 from Nandgopal-R/hotfix/googleOAuth
Hotfix:GoogleOAuth
2 parents 2c01b19 + 7c57ad7 commit 9e844eb

5 files changed

Lines changed: 57 additions & 8 deletions

File tree

‎bun.lock‎

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,14 @@
1616
"@prisma/client": "^7.3.0",
1717
"better-auth": "^1.4.18",
1818
"elysia": "^1.4.22",
19+
"nodemailer": "^8.0.0",
1920
"pg": "^8.18.0",
2021
"pino": "^10.3.0"
2122
},
2223
"devDependencies": {
2324
"@biomejs/biome": "^2.3.14",
2425
"@types/bun": "latest",
26+
"@types/nodemailer": "^7.0.9",
2527
"@types/pg": "^8.16.0",
2628
"husky": "^9.1.7",
2729
"lint-staged": "^16.2.7",
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
-- AlterTable
2+
ALTER TABLE "account" ADD COLUMN "accessTokenExpiresAt" TIMESTAMP(3),
3+
ADD COLUMN "idToken" TEXT,
4+
ADD COLUMN "scope" TEXT;

‎prisma/schema.prisma‎

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,17 @@ model Session {
4545
}
4646

4747
model Account {
48-
id String @id @default(uuid())
49-
userId String
50-
accountId String
51-
providerId String
52-
accessToken String? // <--- Needed for OAuth
53-
refreshToken String? // <--- Needed for OAuth
54-
expiresAt DateTime? // <--- Needed for OAuth
55-
password String? // <--- Needed for Email/Password
48+
id String @id @default(uuid())
49+
userId String
50+
accountId String
51+
providerId String
52+
accessToken String?
53+
refreshToken String?
54+
idToken String?
55+
scope String?
56+
accessTokenExpiresAt DateTime?
57+
expiresAt DateTime?
58+
password String?
5659
5760
createdAt DateTime @default(now())
5861
updatedAt DateTime @updatedAt

‎src/api/auth/index.ts‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,18 @@
11
import { betterAuth } from "better-auth";
22
import { prismaAdapter } from "better-auth/adapters/prisma";
3+
import nodemailer from "nodemailer";
34
import { prisma } from "../../db/prisma";
45

6+
const transporter = nodemailer.createTransport({
7+
host: process.env.SMTP_HOST,
8+
port: parseInt(process.env.SMTP_PORT || "587"),
9+
secure: false, // true for 465, false for other ports
10+
auth: {
11+
user: process.env.SMTP_USER,
12+
pass: process.env.SMTP_PASSWORD,
13+
},
14+
});
15+
516
export const auth = betterAuth({
617
database: prismaAdapter(prisma, {
718
provider: "postgresql",
@@ -20,7 +31,30 @@ export const auth = betterAuth({
2031
emailAndPassword: {
2132
enabled: true,
2233
},
34+
35+
emailVerification: {
36+
sendOnSignUp: true,
37+
autoSignInAfterVerification: true,
38+
sendVerificationEmail: async ({ user, url }) => {
39+
await transporter.sendMail({
40+
from: `"My App" <${process.env.FROM_EMAIL}>`,
41+
42+
to: user.email,
43+
subject: "Verify your email address",
44+
html: `
45+
<h1>Welcome, ${user.name}!</h1>
46+
<p>Click the link below to verify your email:</p>
47+
<a href="${url}">Verify Email</a>
48+
`,
49+
});
50+
console.log(`Verification email sent to ${user.email}`);
51+
},
52+
},
53+
2354
baseURL: process.env.BETTER_AUTH_URL,
55+
trustedOrigins: process.env.BETTER_AUTH_TRUSTED_ORIGINS?.split(",").map((o) =>
56+
o.trim(),
57+
),
2458
socialProviders: {
2559
google: {
2660
prompt: "select_account",

0 commit comments

Comments
 (0)