From 3041da80e20267df1e1bc204254f55bb35627598 Mon Sep 17 00:00:00 2001 From: Max Leiter Date: Sun, 26 Feb 2023 18:41:02 -0800 Subject: [PATCH] Fix useSessionSWR() expecting Drift's API interface instead of next-auths --- package.json | 4 +- pnpm-lock.yaml | 120 +++++++++--------- .../(drift)/(posts)/new/components/new.tsx | 9 +- src/app/(drift)/(posts)/new/page.tsx | 2 - src/app/(drift)/mine/page.tsx | 6 +- src/app/components/header/index.tsx | 49 ++++--- src/lib/constants.ts | 2 + src/lib/server/prisma.ts | 1 - src/lib/use-session-swr.ts | 4 +- src/middleware.ts | 7 +- src/pages/api/post/index.ts | 4 - 11 files changed, 97 insertions(+), 111 deletions(-) diff --git a/package.json b/package.json index 8fa6b6c7..1cb5f708 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@next-auth/prisma-adapter": "^1.0.5", - "@next/eslint-plugin-next": "13.2.2-canary.0", + "@next/eslint-plugin-next": "13.2.2-canary.1", "@prisma/client": "^4.10.1", "@radix-ui/react-dialog": "^1.0.2", "@radix-ui/react-dropdown-menu": "^2.0.3", @@ -27,7 +27,7 @@ "cmdk": "^0.1.22", "jest": "^29.4.3", "lodash.debounce": "^4.0.8", - "next": "13.2.2-canary.0", + "next": "13.2.2-canary.1", "next-auth": "^4.19.2", "next-themes": "^0.2.1", "react": "18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 79069b6f..62735d51 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3,7 +3,7 @@ lockfileVersion: 5.4 specifiers: '@next-auth/prisma-adapter': ^1.0.5 '@next/bundle-analyzer': 13.1.7-canary.26 - '@next/eslint-plugin-next': 13.2.2-canary.0 + '@next/eslint-plugin-next': 13.2.2-canary.1 '@prisma/client': ^4.10.1 '@radix-ui/react-dialog': ^1.0.2 '@radix-ui/react-dropdown-menu': ^2.0.3 @@ -36,7 +36,7 @@ specifiers: jest: ^29.4.3 jest-mock-extended: ^3.0.2 lodash.debounce: ^4.0.8 - next: 13.2.2-canary.0 + next: 13.2.2-canary.1 next-auth: ^4.19.2 next-themes: ^0.2.1 next-unused: 0.0.6 @@ -65,7 +65,7 @@ specifiers: dependencies: '@next-auth/prisma-adapter': 1.0.5_qpmskah7lm3ildf4stmwh4q42u - '@next/eslint-plugin-next': 13.2.2-canary.0 + '@next/eslint-plugin-next': 13.2.2-canary.1 '@prisma/client': 4.10.1_prisma@4.10.1 '@radix-ui/react-dialog': 1.0.2_5ndqzdd6t4rivxsukjv3i3ak2q '@radix-ui/react-dropdown-menu': 2.0.3_5ndqzdd6t4rivxsukjv3i3ak2q @@ -78,9 +78,9 @@ dependencies: cmdk: 0.1.22_5ndqzdd6t4rivxsukjv3i3ak2q jest: 29.4.3_@types+node@18.11.18 lodash.debounce: 4.0.8 - next: 13.2.2-canary.0_biqbaboplfbrettd7655fr4n2y - next-auth: 4.19.2_kc5cm3uhxzg4ew7l4d27zpo4ia - next-themes: 0.2.1_kc5cm3uhxzg4ew7l4d27zpo4ia + next: 13.2.2-canary.1_biqbaboplfbrettd7655fr4n2y + next-auth: 4.19.2_qqyqr3kxb6ily2ps46epmolks4 + next-themes: 0.2.1_qqyqr3kxb6ily2ps46epmolks4 react: 18.2.0 react-datepicker: 4.8.0_biqbaboplfbrettd7655fr4n2y react-dom: 18.2.0_react@18.2.0 @@ -1017,7 +1017,7 @@ packages: next-auth: ^4 dependencies: '@prisma/client': 4.10.1_prisma@4.10.1 - next-auth: 4.19.2_kc5cm3uhxzg4ew7l4d27zpo4ia + next-auth: 4.19.2_qqyqr3kxb6ily2ps46epmolks4 dev: false /@next/bundle-analyzer/13.1.7-canary.26: @@ -1029,8 +1029,8 @@ packages: - utf-8-validate dev: true - /@next/env/13.2.2-canary.0: - resolution: {integrity: sha512-EDy4UF4oXGmWgMq9w8P7Wg7JoYbrGY7EVnZcNoyMDU8o9KeiviYjK2IR3yFBulG0/1I2UbVu2wIM1xPYsQIonQ==} + /@next/env/13.2.2-canary.1: + resolution: {integrity: sha512-UvubCoM6cVfpndCRNBqXlo3J3Qyt4Vsi/1oNfLxoxHrw3L8xt3SkykmBTi/D1VkjGiPzNuan8aPZa7gL0RS5QA==} dev: false /@next/eslint-plugin-next/13.1.7-canary.26: @@ -1039,14 +1039,14 @@ packages: glob: 7.1.7 dev: true - /@next/eslint-plugin-next/13.2.2-canary.0: - resolution: {integrity: sha512-XBeBfEqB/XMyGHyYGG+S+KDA0xlcs+DtXgcfohJXUTD+Hiwjk4Zn4pCuopDGHlO49td5/xdCKznE0LhSDcqhoA==} + /@next/eslint-plugin-next/13.2.2-canary.1: + resolution: {integrity: sha512-Db1iv0NtoyfwDu5RBC/Or3DyxujJx2l8dQFvLzqPkBJ+jOEexuOyM5zcXDVCo4iCr3Yd0acqUmGki9hJ391Y6w==} dependencies: glob: 7.1.7 dev: false - /@next/swc-android-arm-eabi/13.2.2-canary.0: - resolution: {integrity: sha512-/si1jk3wtrarhdVPQloSubTJjLeuTpgT7V2R2w+acWzvBBsrs2ThhZodLz0fJRKcYKmeDZebhtYGUkxkcm48Tw==} + /@next/swc-android-arm-eabi/13.2.2-canary.1: + resolution: {integrity: sha512-QFjIgkr80fzwMuNOVxMxsKRIJmbjuGadyXpSpx9o0u3tIDiCfVkQK3ySjlmXd4X4cs6WIKlbTmMwu3zIa9TEIg==} engines: {node: '>= 10'} cpu: [arm] os: [android] @@ -1054,8 +1054,8 @@ packages: dev: false optional: true - /@next/swc-android-arm64/13.2.2-canary.0: - resolution: {integrity: sha512-MKImVjggMFvPJju48fvz/KqjiqXaKoimGz3Vmc3c12WaSIEa5O1sevw0dQKPI6sv+1Mf5MuP7XlLQ9bWJo+72Q==} + /@next/swc-android-arm64/13.2.2-canary.1: + resolution: {integrity: sha512-Q4q5Oiv6Lg1emJ1AChmyMn7r5Myfaqexx7d+Hy4cX755Ty3AhTpg/pjPM7krFgNVyViuQbP6JNg7sUM2YP2tBQ==} engines: {node: '>= 10'} cpu: [arm64] os: [android] @@ -1063,8 +1063,8 @@ packages: dev: false optional: true - /@next/swc-darwin-arm64/13.2.2-canary.0: - resolution: {integrity: sha512-Sj+hCut5c6K2lOIJpV9KDsDJNe1dVacAE8WWmvotoeu4ab1W0//axZOxksq0S3240oF9CJ8QPZo+q5lPV6Gn2Q==} + /@next/swc-darwin-arm64/13.2.2-canary.1: + resolution: {integrity: sha512-dDKGWM+WH6Rm4s9cHNBBLsdi0nt4+Tqe11U866IquAq0alQCbNYmqoff8tWfj8CGgOwPQ24RPnC6hVJMJ+6JnQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1072,8 +1072,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64/13.2.2-canary.0: - resolution: {integrity: sha512-/lv1J5ts5UhQ5V2V0PpIkQJw8kJywMgvPegZ/yf0fy9QOOdGCAw1dXtZsKUISrJmuzPcCZo0F56Zjbyb6lCLsw==} + /@next/swc-darwin-x64/13.2.2-canary.1: + resolution: {integrity: sha512-nKQG/bB8ULeX1RH2zRnj2703nozlzAQrnPQ2DX3qKyD5kGFdKwQE/kS6ehRzFH3IJh1Aa/XH/j20xrFk01Ah2g==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1081,8 +1081,8 @@ packages: dev: false optional: true - /@next/swc-freebsd-x64/13.2.2-canary.0: - resolution: {integrity: sha512-ECQyYOYd1AKu/oTNeI5pWDXebgKTIWXCs84IN9rXsM7f+FOQmVU8V+gK6Oisw3jya68B1vmfMqLDGQClDDIMAg==} + /@next/swc-freebsd-x64/13.2.2-canary.1: + resolution: {integrity: sha512-1u765vpNLXmi8atsc5j/DafDDZtsLjYOYG+EhPPIG5mgT0tyPSf4oPLJYDOhek5aZH0lsIJP1TRLhcAJR3Jkdg==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] @@ -1090,8 +1090,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm-gnueabihf/13.2.2-canary.0: - resolution: {integrity: sha512-/UQf0yoIwJJhgV8dpDmgWq/Q3/IxqFRsUHfBiy2M6kGVYwB9CnsjZzHwUKmg7sASdv+atW+oc4PIXXN6W9CCgg==} + /@next/swc-linux-arm-gnueabihf/13.2.2-canary.1: + resolution: {integrity: sha512-wTSxU91h5/bLzrDrIVc4nZ6yeL0ptdabJtDgYYgw64wJcoPPooA1u6bjyMnhfBK5bfpDf1TaFc4BEGW7ATvbLw==} engines: {node: '>= 10'} cpu: [arm] os: [linux] @@ -1099,8 +1099,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu/13.2.2-canary.0: - resolution: {integrity: sha512-pv0m+4hnKyq0MwEVAvrJScoYme4GKoPieP0Tj32oRK6P1gafFK4uJxF6zMVPlO0D/tGI7EkoHZjv/7sU5pSYSA==} + /@next/swc-linux-arm64-gnu/13.2.2-canary.1: + resolution: {integrity: sha512-MUgSpujYAytkZmQ3JmNfh0xYvw8Uq2Dk4RCp/FEcW836BLHoEqSOZbVH5XZ2ohA1eqD7NCxn9sFSlXrOf2KsGg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1108,8 +1108,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl/13.2.2-canary.0: - resolution: {integrity: sha512-Bpc7nLJoP6dVPG9lOqCGqWkfiMo143YRx7+cvxSl1FVupkGP7Ntldvl3zS/m2CnU/5egQEjC2C5jEgQRY92Zhw==} + /@next/swc-linux-arm64-musl/13.2.2-canary.1: + resolution: {integrity: sha512-bcm6JvU5rTkcTv/PwQSuxHkVFlHgWZeNqJkQswc37zgqnXxP0jRwrKTchu/Le483wk2ZSOD5pUvgnsH0+2b0pA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1117,8 +1117,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu/13.2.2-canary.0: - resolution: {integrity: sha512-2RPr5AxawTUVaQGrkhWWpjVdExPiA8wEJL6E1itI2gNav8LU3FEsIr9juQURv47Xn2KE286fw8214D6+D0RExg==} + /@next/swc-linux-x64-gnu/13.2.2-canary.1: + resolution: {integrity: sha512-QZeqxoFq/+rDqQgj/W1EboPrTDmzoLO7WevPzbWwr1sFXz6gM1mGjBi+bnHkmJlrQ6sC7BINIf3GMkZUe42KXA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1126,8 +1126,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl/13.2.2-canary.0: - resolution: {integrity: sha512-gKr5tJoJKGSlmDdpmoO1fe6oUeVMz2TluspKPM4ulc0rqyXjrRmQ9pd/oqEoypUKTUkqL49lt4hTL98MkhvXWg==} + /@next/swc-linux-x64-musl/13.2.2-canary.1: + resolution: {integrity: sha512-kpI6TjncEGG1Kfhyd/7pPBi8au4NPgldl1/Bc+G0Fb5Gyg1GQ/oharzxHqhffYNpq1RVqkXXrNcfusx9moEGpg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1135,8 +1135,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc/13.2.2-canary.0: - resolution: {integrity: sha512-0N7+lcV8ycqzgJIye40+Vl0iUk/mu3919T2kfnt20WU7gP+rpRJkPfP44yxBdt7U7XYtnqldM2Ox969y+0qJVw==} + /@next/swc-win32-arm64-msvc/13.2.2-canary.1: + resolution: {integrity: sha512-dGUTTBjhK66c0pjQx3AIwh3PhsHMmjIBsJ0C1YR+5rCZHXgY9S1x/Vm/K1ZDDGO268g6bcFKpO0/8rUAioHl6A==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1144,8 +1144,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc/13.2.2-canary.0: - resolution: {integrity: sha512-vqdsKfJcfvf37P7YcJeIaPP5E7iSR7yTaHwgBpvY6Q0tDRxPv0gr4nRXElBs/V1VcxMaSx9PyyiQkKYB6UzEhg==} + /@next/swc-win32-ia32-msvc/13.2.2-canary.1: + resolution: {integrity: sha512-HxB3ac6DQushJZu2xVfz9KGh9Yzaml/Uzcu9JwqL3Tf8v3g6+Jj/jn520wOl+8k5x1TfL/nxMSmp2QGCjrTygQ==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1153,8 +1153,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc/13.2.2-canary.0: - resolution: {integrity: sha512-Hf1XQaP/hpi9ddS128u8+npotRzX5EOt9y4nxzHRKn6BmjgAKY7CEBsFQMsjVHWqit2Jt3jXspgaCVIFOCE9Ng==} + /@next/swc-win32-x64-msvc/13.2.2-canary.1: + resolution: {integrity: sha512-BTJBjLdJL4Suyz392QKtkWBzIKiWCRI3AC2zTzYrzCqgyGS1wqRDUY0lHXOio7xx/U+dC10yaBaztcTYiWG6RA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -2525,10 +2525,6 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: false - /caniuse-lite/1.0.30001449: - resolution: {integrity: sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw==} - dev: false - /caniuse-lite/1.0.30001458: resolution: {integrity: sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==} @@ -5747,7 +5743,7 @@ packages: dev: true optional: true - /next-auth/4.19.2_kc5cm3uhxzg4ew7l4d27zpo4ia: + /next-auth/4.19.2_qqyqr3kxb6ily2ps46epmolks4: resolution: {integrity: sha512-6V2YG3IJQVhgCAH7mvT3yopTW92gMdUrcwGX7NQ0dCreT/+axGua/JmVdarjec0C/oJukKpIYRgjMlV+L5ZQOQ==} peerDependencies: next: ^12.2.5 || ^13 @@ -5762,7 +5758,7 @@ packages: '@panva/hkdf': 1.0.2 cookie: 0.5.0 jose: 4.11.0 - next: 13.2.2-canary.0_biqbaboplfbrettd7655fr4n2y + next: 13.2.2-canary.1_biqbaboplfbrettd7655fr4n2y oauth: 0.9.15 openid-client: 5.3.0 preact: 10.11.2 @@ -5772,14 +5768,14 @@ packages: uuid: 8.3.2 dev: false - /next-themes/0.2.1_kc5cm3uhxzg4ew7l4d27zpo4ia: + /next-themes/0.2.1_qqyqr3kxb6ily2ps46epmolks4: resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: next: '*' react: '*' react-dom: '*' dependencies: - next: 13.2.2-canary.0_biqbaboplfbrettd7655fr4n2y + next: 13.2.2-canary.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: false @@ -5795,8 +5791,8 @@ packages: - supports-color dev: true - /next/13.2.2-canary.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-sAzQCPI06df+TY7NI6txOkc7sOC7sErnOGF7vXA28GcQ0r4V09s4GDe8XTlPckxJ7o2Ky4OU1eN4NJ3vnDCcZQ==} + /next/13.2.2-canary.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-O/zMVYCLcEY8fC8AmhybhCBQgGV47MYpD3l+cz3fxVXAy1fKwJrpiL/coqLvG9v/NiOL0eu3xLexNf3Ogn6G9w==} engines: {node: '>=14.6.0'} hasBin: true peerDependencies: @@ -5816,27 +5812,27 @@ packages: sass: optional: true dependencies: - '@next/env': 13.2.2-canary.0 + '@next/env': 13.2.2-canary.1 '@swc/helpers': 0.4.14 - caniuse-lite: 1.0.30001449 + caniuse-lite: 1.0.30001458 postcss: 8.4.14 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 styled-jsx: 5.1.1_react@18.2.0 optionalDependencies: - '@next/swc-android-arm-eabi': 13.2.2-canary.0 - '@next/swc-android-arm64': 13.2.2-canary.0 - '@next/swc-darwin-arm64': 13.2.2-canary.0 - '@next/swc-darwin-x64': 13.2.2-canary.0 - '@next/swc-freebsd-x64': 13.2.2-canary.0 - '@next/swc-linux-arm-gnueabihf': 13.2.2-canary.0 - '@next/swc-linux-arm64-gnu': 13.2.2-canary.0 - '@next/swc-linux-arm64-musl': 13.2.2-canary.0 - '@next/swc-linux-x64-gnu': 13.2.2-canary.0 - '@next/swc-linux-x64-musl': 13.2.2-canary.0 - '@next/swc-win32-arm64-msvc': 13.2.2-canary.0 - '@next/swc-win32-ia32-msvc': 13.2.2-canary.0 - '@next/swc-win32-x64-msvc': 13.2.2-canary.0 + '@next/swc-android-arm-eabi': 13.2.2-canary.1 + '@next/swc-android-arm64': 13.2.2-canary.1 + '@next/swc-darwin-arm64': 13.2.2-canary.1 + '@next/swc-darwin-x64': 13.2.2-canary.1 + '@next/swc-freebsd-x64': 13.2.2-canary.1 + '@next/swc-linux-arm-gnueabihf': 13.2.2-canary.1 + '@next/swc-linux-arm64-gnu': 13.2.2-canary.1 + '@next/swc-linux-arm64-musl': 13.2.2-canary.1 + '@next/swc-linux-x64-gnu': 13.2.2-canary.1 + '@next/swc-linux-x64-musl': 13.2.2-canary.1 + '@next/swc-win32-arm64-msvc': 13.2.2-canary.1 + '@next/swc-win32-ia32-msvc': 13.2.2-canary.1 + '@next/swc-win32-x64-msvc': 13.2.2-canary.1 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros diff --git a/src/app/(drift)/(posts)/new/components/new.tsx b/src/app/(drift)/(posts)/new/components/new.tsx index 9b78e927..23a62270 100644 --- a/src/app/(drift)/(posts)/new/components/new.tsx +++ b/src/app/(drift)/(posts)/new/components/new.tsx @@ -16,7 +16,6 @@ import Button from "@components/button" import Input from "@components/input" import ButtonDropdown from "@components/button-dropdown" import { useToasts } from "@components/toasts" -import { useSessionSWR } from "@lib/use-session-swr" import { fetchWithUser } from "src/app/lib/fetch-with-user" import dynamic from "next/dynamic" @@ -41,8 +40,6 @@ function Post({ initialPost?: PostWithFiles newPostParent?: string }): JSX.Element { - const { isAuthenticated } = useSessionSWR() - const { setToast } = useToasts() const router = useRouter() const [title, setTitle] = useState( @@ -91,6 +88,7 @@ function Post({ if (res.ok) { const json = (await res.json()) as { id: string } router.push(`/post/${json.id}`) + return } else { const json = (await res.json()) as { error: string } console.error(json) @@ -177,11 +175,6 @@ function Post({ [] ) - if (isAuthenticated === false) { - router.push("/signin") - return <> - } - function onClosePasswordModal() { setPasswordModalVisible(false) setSubmitting(false) diff --git a/src/app/(drift)/(posts)/new/page.tsx b/src/app/(drift)/(posts)/new/page.tsx index 2e121476..88288129 100644 --- a/src/app/(drift)/(posts)/new/page.tsx +++ b/src/app/(drift)/(posts)/new/page.tsx @@ -6,8 +6,6 @@ export default function New() { return } -export const dynamic = "force-static" - export const metadata = getMetadata({ title: "New post", hidden: true diff --git a/src/app/(drift)/mine/page.tsx b/src/app/(drift)/mine/page.tsx index 87607cc0..23bdad70 100644 --- a/src/app/(drift)/mine/page.tsx +++ b/src/app/(drift)/mine/page.tsx @@ -1,17 +1,17 @@ -import { redirect } from "next/navigation" import { getPostsByUser, serverPostToClientPost } from "@lib/server/prisma" import PostList from "@components/post-list" import { getCurrentUser } from "@lib/server/session" -import { authOptions } from "@lib/server/auth" import { Suspense } from "react" import ErrorBoundary from "@components/error/fallback" import { getMetadata } from "src/app/lib/metadata" +import { redirect } from "next/navigation" export default async function Mine() { const userId = (await getCurrentUser())?.id if (!userId) { - return redirect(authOptions.pages?.signIn || "/new") + // should be handled by middleware + return redirect("/signup") } const posts = (await getPostsByUser(userId, true)).map(serverPostToClientPost) diff --git a/src/app/components/header/index.tsx b/src/app/components/header/index.tsx index c37952ea..ba22fdf8 100644 --- a/src/app/components/header/index.tsx +++ b/src/app/components/header/index.tsx @@ -155,31 +155,30 @@ const Header = () => { isAuthLoading ? ( ) : undefined, - !isAuthLoading ? ( - isAuthenticated ? ( - - } - value="signout" - onClick={() => { - signOut() - mutateSession(undefined) - }} - width={SIGN_IN_WIDTH} - /> - - ) : ( - - } - value="signin" - href="/signin" - width={SIGN_IN_WIDTH} - /> - - ) + isAuthenticated === true ? ( + + } + value="signout" + onClick={() => { + signOut() + mutateSession(undefined) + }} + width={SIGN_IN_WIDTH} + /> + + ) : undefined, + isAuthenticated === false ? ( + + } + value="signin" + href="/signin" + width={SIGN_IN_WIDTH} + /> + ) : undefined, isAdmin ? ( diff --git a/src/lib/constants.ts b/src/lib/constants.ts index b1c52a39..f306a589 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -8,6 +8,8 @@ export function isAllowedVisibilityForWebpage( return ALLOWED_VISIBILITIES_FOR_WEBPAGE.includes(visibility) } +export const SIGNED_IN_COOKIE = "next-auth.session-token" + // Code files for uploading with drag and drop and syntax highlighting export const allowedFileTypes = [ "application/json", diff --git a/src/lib/server/prisma.ts b/src/lib/server/prisma.ts index fb6c6ee4..39f91e50 100644 --- a/src/lib/server/prisma.ts +++ b/src/lib/server/prisma.ts @@ -243,7 +243,6 @@ export const createUser = async ( config.registration_password && serverPassword !== config.registration_password ) { - console.log("Registration password mismatch") throw new Error("Wrong registration password") } diff --git a/src/lib/use-session-swr.ts b/src/lib/use-session-swr.ts index dd56bd4b..b68026dc 100644 --- a/src/lib/use-session-swr.ts +++ b/src/lib/use-session-swr.ts @@ -8,7 +8,9 @@ export function useSessionSWR() { isLoading, isValidating, mutate - } = useSWR("/api/auth/session") + } = useSWR("/api/auth/session", { + fetcher: (url) => fetch(url).then((res) => res.json()) as Promise + }) return { session, diff --git a/src/middleware.ts b/src/middleware.ts index e4c349c0..4ca4f7dc 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -6,20 +6,20 @@ export default withAuth( async function middleware(req) { const token = await getToken({ req }) - const isAuth = !!token + const isAuthed = !!token const isAuthPage = req.nextUrl.pathname.startsWith("/signup") || req.nextUrl.pathname.startsWith("/signin") if (isAuthPage) { - if (isAuth) { + if (isAuthed) { return NextResponse.redirect(new URL("/new", req.url)) } return null } - if (!isAuth) { + if (!isAuthed) { return NextResponse.redirect(new URL("/signin", req.url)) } }, @@ -42,5 +42,6 @@ export const config = { "/signin", "/signup", "/new", + "/mine", ] } diff --git a/src/pages/api/post/index.ts b/src/pages/api/post/index.ts index 1227a3f1..72bcdce3 100644 --- a/src/pages/api/post/index.ts +++ b/src/pages/api/post/index.ts @@ -8,15 +8,12 @@ import { getHtmlFromFile } from "@lib/server/get-html-from-drift-file" import { verifyApiUser } from "@lib/server/verify-api-user" async function handlePost(req: NextApiRequest, res: NextApiResponse) { - console.log("Handling post request") try { const userId = await verifyApiUser(req, res) if (!userId) { return res.status(401).json({ error: "Unauthorized" }) } - console.log("User is authenticated") - const files = req.body.files as (Omit & { content: string html: string @@ -26,7 +23,6 @@ async function handlePost(req: NextApiRequest, res: NextApiResponse) { if (missingTitles.length > 0) { throw new Error("All files must have a title") } - console.log("All files have titles") if (files.length === 0) { throw new Error("You must submit at lea st one file")