From fce3e731b9e73c6f4c30647c7c929a69d3e631f3 Mon Sep 17 00:00:00 2001 From: Bradley Shellnut Date: Tue, 31 Oct 2023 11:54:40 -0700 Subject: [PATCH] Fixed signin basd on vercel learn github suggestions and adding NEXTAUTH_URL to env signin to work. --- app/lib/actions.ts | 14 +++++- auth.config.ts | 4 +- auth.ts | 7 ++- package.json | 8 ++-- pnpm-lock.yaml | 110 +++++++++++++++++++++++---------------------- 5 files changed, 79 insertions(+), 64 deletions(-) diff --git a/app/lib/actions.ts b/app/lib/actions.ts index e92d8c6..25ed2b5 100644 --- a/app/lib/actions.ts +++ b/app/lib/actions.ts @@ -124,12 +124,22 @@ export async function authenticate( prevState: string | undefined, formData: FormData ) { + // Fixed from suggestions in https://github.com/vercel/next-learn/issues/252 + let responseRedirectUrl = null; try { - await signIn("credentials", Object.fromEntries(formData)); + responseRedirectUrl = await signIn("credentials", { + ...Object.fromEntries(formData), + redirect: false, + }); } catch (error) { + console.log("error", error); if ((error as Error).message.includes("CredentialsSignin")) { - return "CredentialsSignin"; + return "CredentialSignin"; } throw error; + } finally { + if (responseRedirectUrl) { + redirect(responseRedirectUrl); + } } } \ No newline at end of file diff --git a/auth.config.ts b/auth.config.ts index c30ec00..3250fc2 100644 --- a/auth.config.ts +++ b/auth.config.ts @@ -13,7 +13,9 @@ export const authConfig = { const isLoggedIn = !!auth?.user; const isOnDashboard = nextUrl.pathname.startsWith("/dashboard"); if (isOnDashboard) { - if (isLoggedIn) return true; + if (isLoggedIn) { + return true; + } return false; // Redirect unathenticated users to login page } else if (isLoggedIn) { return Response.redirect(new URL("/dashboard", nextUrl)); diff --git a/auth.ts b/auth.ts index 98e0352..d5436b6 100644 --- a/auth.ts +++ b/auth.ts @@ -26,18 +26,17 @@ export const { auth, signIn, signOut } = NextAuth({ .safeParse(credentials); if (parsedCredentials.success) { - console.log('Valid credentials'); const { email, password } = parsedCredentials.data; const user = await getUser(email); if (!user) return null; const passwordsMatch = await bcrypt.compare(password, user.password); - console.log('Passwords match', passwordsMatch); - if (passwordsMatch) return user; + if (passwordsMatch) { + return user; + } } - console.log("Invalid credentials"); return null; }, }), diff --git a/package.json b/package.json index c52ce5d..9e9f0ea 100644 --- a/package.json +++ b/package.json @@ -11,11 +11,11 @@ "@heroicons/react": "^2.0.18", "@tailwindcss/forms": "^0.5.6", "@types/node": "20.5.7", - "@vercel/postgres": "^0.5.0", + "@vercel/postgres": "^0.5.1", "autoprefixer": "10.4.15", "bcrypt": "^5.1.1", "clsx": "^2.0.0", - "next": "^14.0.0", + "next": "^14.0.1", "next-auth": "5.0.0-beta.3", "postcss": "8.4.31", "react": "18.2.0", @@ -27,7 +27,7 @@ }, "devDependencies": { "@types/bcrypt": "^5.0.1", - "@types/react": "18.2.21", + "@types/react": "18.2.33", "@types/react-dom": "18.2.14", "dotenv": "^16.3.1", "eslint": "8.52.0", @@ -35,6 +35,6 @@ "prettier": "^3.0.3" }, "engines": { - "node": ">=18" + "node": ">=18.11" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 41d43f1..a3288f9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ dependencies: specifier: 20.5.7 version: 20.5.7 '@vercel/postgres': - specifier: ^0.5.0 - version: 0.5.0 + specifier: ^0.5.1 + version: 0.5.1 autoprefixer: specifier: 10.4.15 version: 10.4.15(postcss@8.4.31) @@ -27,11 +27,11 @@ dependencies: specifier: ^2.0.0 version: 2.0.0 next: - specifier: ^14.0.0 - version: 14.0.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^14.0.1 + version: 14.0.1(react-dom@18.2.0)(react@18.2.0) next-auth: specifier: 5.0.0-beta.3 - version: 5.0.0-beta.3(next@14.0.0)(react@18.2.0) + version: 5.0.0-beta.3(next@14.0.1)(react@18.2.0) postcss: specifier: 8.4.31 version: 8.4.31 @@ -59,8 +59,8 @@ devDependencies: specifier: ^5.0.1 version: 5.0.1 '@types/react': - specifier: 18.2.21 - version: 18.2.21 + specifier: 18.2.33 + version: 18.2.33 '@types/react-dom': specifier: 18.2.14 version: 18.2.14 @@ -231,8 +231,8 @@ packages: '@types/pg': 8.6.6 dev: false - /@next/env@14.0.0: - resolution: {integrity: sha512-cIKhxkfVELB6hFjYsbtEeTus2mwrTC+JissfZYM0n+8Fv+g8ucUfOlm3VEDtwtwydZ0Nuauv3bl0qF82nnCAqA==} + /@next/env@14.0.1: + resolution: {integrity: sha512-Ms8ZswqY65/YfcjrlcIwMPD7Rg/dVjdLapMcSHG26W6O67EJDF435ShW4H4LXi1xKO1oRc97tLXUpx8jpLe86A==} dev: false /@next/eslint-plugin-next@14.0.1: @@ -241,8 +241,8 @@ packages: glob: 7.1.7 dev: true - /@next/swc-darwin-arm64@14.0.0: - resolution: {integrity: sha512-HQKi159jCz4SRsPesVCiNN6tPSAFUkOuSkpJsqYTIlbHLKr1mD6be/J0TvWV6fwJekj81bZV9V/Tgx3C2HO9lA==} + /@next/swc-darwin-arm64@14.0.1: + resolution: {integrity: sha512-JyxnGCS4qT67hdOKQ0CkgFTp+PXub5W1wsGvIq98TNbF3YEIN7iDekYhYsZzc8Ov0pWEsghQt+tANdidITCLaw==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -250,8 +250,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.0.0: - resolution: {integrity: sha512-4YyQLMSaCgX/kgC1jjF3s3xSoBnwHuDhnF6WA1DWNEYRsbOOPWjcYhv8TKhRe2ApdOam+VfQSffC4ZD+X4u1Cg==} + /@next/swc-darwin-x64@14.0.1: + resolution: {integrity: sha512-625Z7bb5AyIzswF9hvfZWa+HTwFZw+Jn3lOBNZB87lUS0iuCYDHqk3ujuHCkiyPtSC0xFBtYDLcrZ11mF/ap3w==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -259,8 +259,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.0.0: - resolution: {integrity: sha512-io7fMkJ28Glj7SH8yvnlD6naIhRDnDxeE55CmpQkj3+uaA2Hko6WGY2pT5SzpQLTnGGnviK85cy8EJ2qsETj/g==} + /@next/swc-linux-arm64-gnu@14.0.1: + resolution: {integrity: sha512-iVpn3KG3DprFXzVHM09kvb//4CNNXBQ9NB/pTm8LO+vnnnaObnzFdS5KM+w1okwa32xH0g8EvZIhoB3fI3mS1g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -268,8 +268,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.0.0: - resolution: {integrity: sha512-nC2h0l1Jt8LEzyQeSs/BKpXAMe0mnHIMykYALWaeddTqCv5UEN8nGO3BG8JAqW/Y8iutqJsaMe2A9itS0d/r8w==} + /@next/swc-linux-arm64-musl@14.0.1: + resolution: {integrity: sha512-mVsGyMxTLWZXyD5sen6kGOTYVOO67lZjLApIj/JsTEEohDDt1im2nkspzfV5MvhfS7diDw6Rp/xvAQaWZTv1Ww==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -277,8 +277,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.0.0: - resolution: {integrity: sha512-Wf+WjXibJQ7hHXOdNOmSMW5bxeJHVf46Pwb3eLSD2L76NrytQlif9NH7JpHuFlYKCQGfKfgSYYre5rIfmnSwQw==} + /@next/swc-linux-x64-gnu@14.0.1: + resolution: {integrity: sha512-wMqf90uDWN001NqCM/auRl3+qVVeKfjJdT9XW+RMIOf+rhUzadmYJu++tp2y+hUbb6GTRhT+VjQzcgg/QTD9NQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -286,8 +286,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.0.0: - resolution: {integrity: sha512-WTZb2G7B+CTsdigcJVkRxfcAIQj7Lf0ipPNRJ3vlSadU8f0CFGv/ST+sJwF5eSwIe6dxKoX0DG6OljDBaad+rg==} + /@next/swc-linux-x64-musl@14.0.1: + resolution: {integrity: sha512-ol1X1e24w4j4QwdeNjfX0f+Nza25n+ymY0T2frTyalVczUmzkVD7QGgPTZMHfR1aLrO69hBs0G3QBYaj22J5GQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -295,8 +295,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.0.0: - resolution: {integrity: sha512-7R8/x6oQODmNpnWVW00rlWX90sIlwluJwcvMT6GXNIBOvEf01t3fBg0AGURNKdTJg2xNuP7TyLchCL7Lh2DTiw==} + /@next/swc-win32-arm64-msvc@14.0.1: + resolution: {integrity: sha512-WEmTEeWs6yRUEnUlahTgvZteh5RJc4sEjCQIodJlZZ5/VJwVP8p2L7l6VhzQhT4h7KvLx/Ed4UViBdne6zpIsw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -304,8 +304,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.0.0: - resolution: {integrity: sha512-RLK1nELvhCnxaWPF07jGU4x3tjbyx2319q43loZELqF0+iJtKutZ+Lk8SVmf/KiJkYBc7Cragadz7hb3uQvz4g==} + /@next/swc-win32-ia32-msvc@14.0.1: + resolution: {integrity: sha512-oFpHphN4ygAgZUKjzga7SoH2VGbEJXZa/KL8bHCAwCjDWle6R1SpiGOdUdA8EJ9YsG1TYWpzY6FTbUA+iAJeww==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -313,8 +313,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.0.0: - resolution: {integrity: sha512-g6hLf1SUko+hnnaywQQZzzb3BRecQsoKkF3o/C+F+dOA4w/noVAJngUVkfwF0+2/8FzNznM7ofM6TGZO9svn7w==} + /@next/swc-win32-x64-msvc@14.0.1: + resolution: {integrity: sha512-FFp3nOJ/5qSpeWT0BZQ+YE1pSMk4IMpkME/1DwKBwhg4mJLB9L+6EXuJi4JEwaJdl5iN+UUlmUD3IsR1kx5fAg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -391,11 +391,11 @@ packages: /@types/react-dom@18.2.14: resolution: {integrity: sha512-V835xgdSVmyQmI1KLV2BEIUgqEuinxp9O4G6g3FqO/SqLac049E53aysv0oEFD2kHfejeKU+ZqL2bcFWj9gLAQ==} dependencies: - '@types/react': 18.2.21 + '@types/react': 18.2.33 dev: true - /@types/react@18.2.21: - resolution: {integrity: sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==} + /@types/react@18.2.33: + resolution: {integrity: sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg==} dependencies: '@types/prop-types': 15.7.9 '@types/scheduler': 0.16.5 @@ -473,14 +473,14 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@vercel/postgres@0.5.0: - resolution: {integrity: sha512-MFWp9SZmADqBe2x2mzEvwmGLiwOd8PVkUxYeBZx/RqdHl0bd8/1BH0zBR+zSimGyi9P/MVtZoJLdf5dkWw9m5Q==} + /@vercel/postgres@0.5.1: + resolution: {integrity: sha512-JKl8QOBIDnifhkxAhIKtY0A5Tb8oWBf2nzZhm0OH7Ffjsl0hGVnDL2w1/FCfpX8xna3JAWM034NGuhZfTFdmiw==} engines: {node: '>=14.6'} dependencies: '@neondatabase/serverless': 0.6.0 - bufferutil: 4.0.7 + bufferutil: 4.0.8 utf-8-validate: 6.0.3 - ws: 8.14.2(bufferutil@4.0.7)(utf-8-validate@6.0.3) + ws: 8.14.2(bufferutil@4.0.8)(utf-8-validate@6.0.3) dev: false /abbrev@1.1.1: @@ -730,8 +730,8 @@ packages: update-browserslist-db: 1.0.13(browserslist@4.22.1) dev: false - /bufferutil@4.0.7: - resolution: {integrity: sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==} + /bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} engines: {node: '>=6.14.2'} requiresBuild: true dependencies: @@ -767,6 +767,10 @@ packages: resolution: {integrity: sha512-/Et7DwLqpjS47JPEcz6VnxU9PwcIdVi0ciLXRWBQdj1XFye68pSQYpV0QtPTfUKWuOaEig+/Vez2l74eDc1tPQ==} dev: false + /caniuse-lite@1.0.30001559: + resolution: {integrity: sha512-cPiMKZgqgkg5LY3/ntGeLFUpi6tzddBNS58A4tnTgQw1zON7u2sZMU7SzOeVH4tj20++9ggL+V6FDOFMTaFFYA==} + dev: false + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -2032,7 +2036,7 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /next-auth@5.0.0-beta.3(next@14.0.0)(react@18.2.0): + /next-auth@5.0.0-beta.3(next@14.0.1)(react@18.2.0): resolution: {integrity: sha512-WOKhATBFGeONV+29HzFmspNmL7NXxrsCWLfaDKmAd/4DD1nqXE0BzNFH8t3SJBx7PUDMnB6F7xB76LM/AaV1MQ==} peerDependencies: next: ^14 @@ -2043,12 +2047,12 @@ packages: optional: true dependencies: '@auth/core': 0.0.0-manual.e9863699 - next: 14.0.0(react-dom@18.2.0)(react@18.2.0) + next: 14.0.1(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false - /next@14.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-J0jHKBJpB9zd4+c153sair0sz44mbaCHxggs8ryVXSFBuBqJ8XdE9/ozoV85xGh2VnSjahwntBZZgsihL9QznA==} + /next@14.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-s4YaLpE4b0gmb3ggtmpmV+wt+lPRuGtANzojMQ2+gmBpgX9w5fTbjsy6dXByBuENsdCX5pukZH/GxdFgO62+pA==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -2062,25 +2066,25 @@ packages: sass: optional: true dependencies: - '@next/env': 14.0.0 + '@next/env': 14.0.1 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001558 + caniuse-lite: 1.0.30001559 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) watchpack: 2.4.0 optionalDependencies: - '@next/swc-darwin-arm64': 14.0.0 - '@next/swc-darwin-x64': 14.0.0 - '@next/swc-linux-arm64-gnu': 14.0.0 - '@next/swc-linux-arm64-musl': 14.0.0 - '@next/swc-linux-x64-gnu': 14.0.0 - '@next/swc-linux-x64-musl': 14.0.0 - '@next/swc-win32-arm64-msvc': 14.0.0 - '@next/swc-win32-ia32-msvc': 14.0.0 - '@next/swc-win32-x64-msvc': 14.0.0 + '@next/swc-darwin-arm64': 14.0.1 + '@next/swc-darwin-x64': 14.0.1 + '@next/swc-linux-arm64-gnu': 14.0.1 + '@next/swc-linux-arm64-musl': 14.0.1 + '@next/swc-linux-x64-gnu': 14.0.1 + '@next/swc-linux-x64-musl': 14.0.1 + '@next/swc-win32-arm64-msvc': 14.0.1 + '@next/swc-win32-ia32-msvc': 14.0.1 + '@next/swc-win32-x64-msvc': 14.0.1 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -3056,7 +3060,7 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /ws@8.14.2(bufferutil@4.0.7)(utf-8-validate@6.0.3): + /ws@8.14.2(bufferutil@4.0.8)(utf-8-validate@6.0.3): resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} engines: {node: '>=10.0.0'} peerDependencies: @@ -3068,7 +3072,7 @@ packages: utf-8-validate: optional: true dependencies: - bufferutil: 4.0.7 + bufferutil: 4.0.8 utf-8-validate: 6.0.3 dev: false