Better-Auth - Full Guide (OAuth, Emails, Roles, Hooks, Authorization, Prisma, Next.js 15, Resend)

Coding in Flow Guide 10 months ago

Description

Learn authentication with Better-Auth in Next.js! We will cover:

- What makes Better-Auth better than its alternatives
- How to set up Better-Auth with Prisma and PostgreSQL
- How to use plugins in Better-Auth
- How to add email & password login
- How to add social login (OAuth) with Google and GitHub
- How to add roles and handle authorization
- How to protect pages with unauthorized.tsx and forbidden.tsx
- How to send transactional emails like verification and password reset emails with Resend
- How to use hooks to enforce custom password validation rules
- How to update user data like profile image, username, password, and email
- Important best practices like SSR and caching
- How to deploy your Better-Auth project to Vercel
- And much more!

Links & files:
Starting code: https://github.com/codinginflow/better-auth-tutorial/tree/starting-code
Final code: https://github.com/codinginflow/better-auth-tutorial
Prisma + Better-Auth setup guide: https://pris.ly/betterauth-nextjs
lib/prisma.ts: https://github.com/codinginflow/better-auth-tutorial/blob/final-project/src/lib/prisma.ts
Get your domain at Namecheap: https://namecheap.pxf.io/c/3559246/1632743/5618

⭐ Get my full-stack Next.js with Express & TypeScript course: https://codinginflow.com/nextjs
✅ Get my free React Best Practices course: https://www.codinginflow.com/reactbestpractices
💌 Join my newsletter for regular web dev tips: https://codinginflow.com/newsletter
💬 Join our developer community on Discord: https://codinginflow.com/discord

📣 Follow Coding in Flow on social media:
Twitter: https://twitter.com/codinginflow
Instagram: https://instagram.com/codinginflow
TikTok: https://tiktok.com/@codinginflow
Facebook: https://facebook.com/codinginflow

Timestamps:
0:00 - Why choose Better-Auth for authentication?
1:19 - Starting code setup
3:48 - Prisma & Prisma Postgres DB setup
7:50 - Better-Auth setup
16:16 - Email sign-up + sign-in
29:29 - Load session + user data (SSR) & protect pages (unauthorized.tsx)
36:18 - Custom User type with additional fields ($Infer.Session, $Infer.User)
44:55 - Request deduplication with React.cache
47:24 - Admin role (forbidden.tsx, server action)
52:47 - Email verification (Resend)
1:08:33 - Forgot password/reset password
1:18:08 - Hooks (custom password validation rules, APIError)
1:26:28 - Social login with Google & GitHub (OAuth)
1:36:26 - Redirects (route groups, layout.tsx, usePathname, useSearchParams)
1:42:48 - Update user profile data + image
1:47:31 - Change email
1:53:15 - Change password
1:56:21 - Revoke sessions (logout everywhere)
1:58:08 - Deployment to Vercel
2:01:00 - Outro + FREE React Best Practices course