diff --git a/README.md b/README.md index 596249f..ee53371 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,6 @@ # Authentication Authentication consists of the following parts: * `next-auth` boilerplate - * `middleware.ts` = hooks-up `next-auth` into the page processing pipeline - * `auth.config.ts` = defines how user session is to be checked and redirects anonymous user to login page - * `auth.ts` = verifies user credentials during the log-in action (i.e. against a database) - * exports `auth`, `signIn`, `signOut` actions -* UI boilerplate - * `sidenav.tsx` = implements logout action - calls `signOut` from `auth.ts` - * `login-form.tsx` = implements login form - * `actions.ts` = handles login-form validation and submition - calls `signIn` from `auth.ts` + * `middleware.ts` = hooks-up `next-auth` into the page processing pipeline - user session is checked before any page is rendered + * `auth.ts` = defines how the authentication is done, and how session is checked (used by middleware) + * `/app/api/[...nextauth]/route.ts` = defines route which shows an authentication form diff --git a/app/api/auth/[...nextauth]/route.ts b/app/api/auth/[...nextauth]/route.ts index d10f26c..e9da560 100644 --- a/app/api/auth/[...nextauth]/route.ts +++ b/app/api/auth/[...nextauth]/route.ts @@ -1 +1 @@ -export { GET, POST } from '@/app/lib/auth.google'; \ No newline at end of file +export { GET, POST } from '@/app/lib/auth'; \ No newline at end of file diff --git a/app/lib/auth.config.google.ts b/app/lib/auth.config.google.ts deleted file mode 100644 index e5ccdba..0000000 --- a/app/lib/auth.config.google.ts +++ /dev/null @@ -1,29 +0,0 @@ -import NextAuth, { NextAuthConfig } from 'next-auth'; -import GoogleProvider from 'next-auth/providers/google'; - -export const authConfig:NextAuthConfig = { -callbacks: { - async signIn({ account, profile }) { - if (account?.provider === "google") { - return profile?.email_verified === true && profile?.email?.endsWith("@google.com") === true - } - return true // Do different verification for other providers that don't have `email_verified` - }, - authorized({ auth, request: { nextUrl } }) { - const isLoggedIn = !!auth?.user; - return(isLoggedIn); - }, -}, - providers: [ - GoogleProvider({ - clientId: process.env.GOOGLE_ID, - clientSecret: process.env.GOOGLE_SECRET, - }), - ], - session: { - // Use JSON Web Tokens for session instead of database sessions. - // This option can be used with or without a database for users/accounts. - // Note: `jwt` is automatically set to `true` if no database is specified. - strategy: 'jwt' - }, -}; \ No newline at end of file diff --git a/app/lib/auth.google.ts b/app/lib/auth.ts similarity index 100% rename from app/lib/auth.google.ts rename to app/lib/auth.ts diff --git a/app/page.tsx b/app/page.tsx index 8d6574a..0e33f79 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -5,7 +5,7 @@ import { AddLocationButton } from './ui/AddLocationButton'; import clientPromise from './lib/mongodb'; import { BillingLocation } from './lib/db-types'; import { PageFooter } from './ui/PageFooter'; -import { auth } from '@/app/lib/auth.google'; +import { auth } from '@/app/lib/auth'; import { redirect } from 'next/navigation'; const getNextYearMonth = (yearMonth:number) => { diff --git a/middleware.ts b/middleware.ts index 9f1fc01..0971527 100644 --- a/middleware.ts +++ b/middleware.ts @@ -3,9 +3,9 @@ * @description hooks-up `next-auth` into the page processing pipeline */ -import { auth } from '@/app/lib/auth.google' +import { auth } from '@/app/lib/auth' -export default auth; // middleware will call NextAuth's `auth` method, which will in turn call) see `auth.config.google.ts` +export default auth; // middleware will call NextAuth's `auth` method, which will in turn call) see `auth.ts` export const config = { // midleware will NOT be called for paths: ['/api/auth/*', '/_next/static/*', '/_next/image*']