From a8d1d0dc15a96cd244c75c3742eebedde13ff18f Mon Sep 17 00:00:00 2001 From: Sam Becker Date: Wed, 6 Sep 2023 00:18:10 -0500 Subject: [PATCH] Finish `next-auth` proof of concept --- package.json | 7 +- pnpm-lock.yaml | 423 +++--------------- src/app/(auth-state)/layout.tsx | 6 +- .../sign-in/[[...sign-in]]/page.tsx | 16 - src/app/(isr)/layout.tsx | 23 +- src/app/api/[...nextauth]/route.ts | 2 + src/app/sign-in/page.tsx | 21 + src/auth.ts | 40 ++ src/components/AuthNav.tsx | 12 +- src/components/Footer.tsx | 38 ++ src/components/LoginButton.tsx | 14 + src/middleware.ts | 28 +- src/site/globals.css | 1 + 13 files changed, 196 insertions(+), 435 deletions(-) delete mode 100644 src/app/(auth-state)/sign-in/[[...sign-in]]/page.tsx create mode 100644 src/app/api/[...nextauth]/route.ts create mode 100644 src/app/sign-in/page.tsx create mode 100644 src/auth.ts create mode 100644 src/components/Footer.tsx create mode 100644 src/components/LoginButton.tsx diff --git a/package.json b/package.json index 7913d564..a2679774 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,6 @@ "lint": "next lint" }, "dependencies": { - "@clerk/nextjs": "^4.23.4", "@tailwindcss/forms": "^0.5.6", "@types/node": "^20.5.9", "@types/react": "18.2.21", @@ -26,6 +25,7 @@ "eslint-config-next": "13.4.19", "framer-motion": "^10.16.3", "next": "^13.4.19", + "next-auth": "0.0.0-manual.ffd05533", "next-themes": "^0.2.1", "postcss": "8.4.29", "react": "18.2.0", @@ -36,5 +36,10 @@ "tailwindcss": "3.3.3", "ts-exif-parser": "^0.2.2", "typescript": "5.2.2" + }, + "pnpm": { + "overrides": { + "@auth/core": "0.13.0" + } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 77f425f3..72d40e65 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,7 +1,9 @@ lockfileVersion: 5.4 +overrides: + '@auth/core': 0.13.0 + specifiers: - '@clerk/nextjs': ^4.23.4 '@tailwindcss/forms': ^0.5.6 '@types/node': ^20.5.9 '@types/react': 18.2.21 @@ -19,6 +21,7 @@ specifiers: eslint-config-next: 13.4.19 framer-motion: ^10.16.3 next: ^13.4.19 + next-auth: 0.0.0-manual.ffd05533 next-themes: ^0.2.1 postcss: 8.4.29 react: 18.2.0 @@ -31,7 +34,6 @@ specifiers: typescript: 5.2.2 dependencies: - '@clerk/nextjs': 4.23.4_m2l4knchnqa6bzxbbtfxlzoxdy '@tailwindcss/forms': 0.5.6_tailwindcss@3.3.3 '@types/node': 20.5.9 '@types/react': 18.2.21 @@ -49,6 +51,7 @@ dependencies: eslint-config-next: 13.4.19_w2g2uv42be7wag4oipwkfv43p4 framer-motion: 10.16.3_biqbaboplfbrettd7655fr4n2y next: 13.4.19_biqbaboplfbrettd7655fr4n2y + next-auth: 0.0.0-manual.ffd05533_next@13.4.19+react@18.2.0 next-themes: 0.2.1_m2l4knchnqa6bzxbbtfxlzoxdy postcss: 8.4.29 react: 18.2.0 @@ -72,6 +75,22 @@ packages: engines: {node: '>=10'} dev: false + /@auth/core/0.13.0: + resolution: {integrity: sha512-StjrzUenaKfMr68kmvhiqfY0xvxRvg8wllmem9JAULpPAAAt3uwRUDXICWOP/PfWB4OZ2wQT7rgfm0n42b+Mjg==} + peerDependencies: + nodemailer: ^6.8.0 + peerDependenciesMeta: + nodemailer: + optional: true + dependencies: + '@panva/hkdf': 1.1.1 + cookie: 0.5.0 + jose: 4.14.6 + oauth4webapi: 2.3.0 + preact: 10.11.3 + preact-render-to-string: 5.2.3_preact@10.11.3 + dev: false + /@babel/code-frame/7.22.10: resolution: {integrity: sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==} engines: {node: '>=6.9.0'} @@ -101,83 +120,6 @@ packages: regenerator-runtime: 0.14.0 dev: false - /@clerk/backend/0.28.1: - resolution: {integrity: sha512-L8YT9wCy42yA1q5sxovgmVhmGwUw1/lUY35Yy1e0sDC8FsbdW7763RgXukFvCCFyYrjXTTcfHH6VG/IndbHsTw==} - engines: {node: '>=14'} - dependencies: - '@clerk/types': 3.50.0 - '@peculiar/webcrypto': 1.4.1 - '@types/node': 16.18.6 - cookie: 0.5.0 - deepmerge: 4.2.2 - node-fetch-native: 1.0.1 - snakecase-keys: 5.4.4 - tslib: 2.4.1 - dev: false - - /@clerk/clerk-react/4.24.1_react@18.2.0: - resolution: {integrity: sha512-Xo1Y+jxGs01/v/vtfK0650Ie4ACIseAKnTX02TnXCvJAfiByGVZ6to5DyifGUcvplc7PVTy/NHRXUWSvwV+32A==} - engines: {node: '>=14'} - peerDependencies: - react: '>=16' - dependencies: - '@clerk/shared': 0.22.0_react@18.2.0 - '@clerk/types': 3.50.0 - react: 18.2.0 - tslib: 2.4.1 - dev: false - - /@clerk/clerk-sdk-node/4.12.4: - resolution: {integrity: sha512-ISXdeI+uMnydbzmjV0ONdsKNACUklpo68kz2j8EnVuxYMnzSuAevpyF3/SQlsNpiG5e4ZTT8EmKMaandUSKKDw==} - engines: {node: '>=14'} - dependencies: - '@clerk/backend': 0.28.1 - '@clerk/types': 3.50.0 - '@types/cookies': 0.7.7 - '@types/express': 4.17.14 - '@types/node-fetch': 2.6.2 - camelcase-keys: 6.2.2 - snakecase-keys: 3.2.1 - tslib: 2.4.1 - dev: false - - /@clerk/nextjs/4.23.4_m2l4knchnqa6bzxbbtfxlzoxdy: - resolution: {integrity: sha512-Alee+R1QiXKbIrVySGTZiAefoS4CE6Dmvj0LvG7n2UP3UhuEoowoz5N1rTTW3qeAffrqJepJOW8UB6jn0ac7Mg==} - engines: {node: '>=14'} - peerDependencies: - next: '>=10' - react: ^17.0.2 || ^18.0.0-0 - react-dom: ^17.0.2 || ^18.0.0-0 - dependencies: - '@clerk/backend': 0.28.1 - '@clerk/clerk-react': 4.24.1_react@18.2.0 - '@clerk/clerk-sdk-node': 4.12.4 - '@clerk/types': 3.50.0 - next: 13.4.19_biqbaboplfbrettd7655fr4n2y - path-to-regexp: 6.2.1 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - tslib: 2.4.1 - dev: false - - /@clerk/shared/0.22.0_react@18.2.0: - resolution: {integrity: sha512-AHPypu9gZ3v44PRqiMA56c+YNLc2IzLaPUyiYFYU+xeH/R+wqzGp7OxZoZr/kmzgA8taiVl/bjixWgpuZwzI3A==} - peerDependencies: - react: '>=16' - dependencies: - glob-to-regexp: 0.4.1 - js-cookie: 3.0.1 - react: 18.2.0 - swr: 2.2.0_react@18.2.0 - dev: false - - /@clerk/types/3.50.0: - resolution: {integrity: sha512-3TWalDWPTFToXC/W07QUIBN96TA+4dR3YLBvwr9U2Z4RVG9in9HW4CTC6aHTnJ2kVtTcgDkXjDKeVKS1GjPCcA==} - engines: {node: '>=14'} - dependencies: - csstype: 3.1.1 - dev: false - /@emotion/is-prop-valid/0.8.8: resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} requiresBuild: true @@ -437,30 +379,8 @@ packages: fastq: 1.15.0 dev: false - /@peculiar/asn1-schema/2.3.6: - resolution: {integrity: sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA==} - dependencies: - asn1js: 3.0.5 - pvtsutils: 1.3.3 - tslib: 2.6.1 - dev: false - - /@peculiar/json-schema/1.1.12: - resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} - engines: {node: '>=8.0.0'} - dependencies: - tslib: 2.6.1 - dev: false - - /@peculiar/webcrypto/1.4.1: - resolution: {integrity: sha512-eK4C6WTNYxoI7JOabMoZICiyqRRtJB220bh0Mbj5RwRycleZf9BPyZoxsTvpP0FpmVS2aS13NKOuh5/tN3sIRw==} - engines: {node: '>=10.12.0'} - dependencies: - '@peculiar/asn1-schema': 2.3.6 - '@peculiar/json-schema': 1.1.12 - pvtsutils: 1.3.3 - tslib: 2.6.1 - webcrypto-core: 1.7.7 + /@panva/hkdf/1.1.1: + resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} dev: false /@resvg/resvg-wasm/2.4.1: @@ -517,50 +437,6 @@ packages: engines: {node: '>= 10'} dev: false - /@types/body-parser/1.19.2: - resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} - dependencies: - '@types/connect': 3.4.35 - '@types/node': 20.5.9 - dev: false - - /@types/connect/3.4.35: - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} - dependencies: - '@types/node': 20.5.9 - dev: false - - /@types/cookies/0.7.7: - resolution: {integrity: sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==} - dependencies: - '@types/connect': 3.4.35 - '@types/express': 4.17.14 - '@types/keygrip': 1.0.2 - '@types/node': 20.5.9 - dev: false - - /@types/express-serve-static-core/4.17.35: - resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} - dependencies: - '@types/node': 20.5.9 - '@types/qs': 6.9.7 - '@types/range-parser': 1.2.4 - '@types/send': 0.17.1 - dev: false - - /@types/express/4.17.14: - resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==} - dependencies: - '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 4.17.35 - '@types/qs': 6.9.7 - '@types/serve-static': 1.15.2 - dev: false - - /@types/http-errors/2.0.1: - resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} - dev: false - /@types/istanbul-lib-coverage/2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: false @@ -593,29 +469,6 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: false - /@types/keygrip/1.0.2: - resolution: {integrity: sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==} - dev: false - - /@types/mime/1.3.2: - resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} - dev: false - - /@types/mime/3.0.1: - resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} - dev: false - - /@types/node-fetch/2.6.2: - resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} - dependencies: - '@types/node': 20.5.9 - form-data: 3.0.1 - dev: false - - /@types/node/16.18.6: - resolution: {integrity: sha512-vmYJF0REqDyyU0gviezF/KHq/fYaUbFhkcNbQCuPGFQj6VTbXuHZoxs/Y7mutWe73C8AC6l9fFu8mSYiBAqkGA==} - dev: false - /@types/node/20.5.9: resolution: {integrity: sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==} dev: false @@ -632,14 +485,6 @@ packages: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: false - /@types/qs/6.9.7: - resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} - dev: false - - /@types/range-parser/1.2.4: - resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} - dev: false - /@types/react-dom/18.2.7: resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} dependencies: @@ -662,21 +507,6 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: false - /@types/send/0.17.1: - resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} - dependencies: - '@types/mime': 1.3.2 - '@types/node': 20.5.9 - dev: false - - /@types/serve-static/1.15.2: - resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} - dependencies: - '@types/http-errors': 2.0.1 - '@types/mime': 3.0.1 - '@types/node': 20.5.9 - dev: false - /@types/stack-utils/2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: false @@ -1040,15 +870,6 @@ packages: is-shared-array-buffer: 1.0.2 dev: false - /asn1js/3.0.5: - resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} - engines: {node: '>=12.0.0'} - dependencies: - pvtsutils: 1.3.3 - pvutils: 1.1.3 - tslib: 2.6.1 - dev: false - /ast-types-flow/0.0.7: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: false @@ -1166,15 +987,6 @@ packages: engines: {node: '>= 6'} dev: false - /camelcase-keys/6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - dev: false - /camelcase-keys/9.0.0: resolution: {integrity: sha512-GdZ92DNXdcfFB/5Kq4O82EL6UW5neiRBhfNP5M3mGw7CX2sPDbVA04ZPLsqbp7oMi2l3m2I0AZ/kFP5Nk5kopA==} engines: {node: '>=16'} @@ -1185,11 +997,6 @@ packages: type-fest: 4.2.0 dev: false - /camelcase/5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: false - /camelcase/8.0.0: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} @@ -1337,10 +1144,6 @@ packages: cssom: 0.3.8 dev: false - /csstype/3.1.1: - resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} - dev: false - /csstype/3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} dev: false @@ -1396,11 +1199,6 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: false - /deepmerge/4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} - engines: {node: '>=0.10.0'} - dev: false - /define-properties/1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} @@ -1455,13 +1253,6 @@ packages: webidl-conversions: 7.0.0 dev: false - /dot-case/3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dependencies: - no-case: 3.0.4 - tslib: 2.6.1 - dev: false - /electron-to-chromium/1.4.492: resolution: {integrity: sha512-36K9b/6skMVwAIEsC7GiQ8I8N3soCALVSHqWHzNDtGemAcI9Xu8hP02cywWM0A794rTHm0b0zHPeLJHtgFVamQ==} dev: false @@ -1965,15 +1756,6 @@ packages: is-callable: 1.2.7 dev: false - /form-data/3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: false - /form-data/4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -2518,9 +2300,8 @@ packages: hasBin: true dev: false - /js-cookie/3.0.1: - resolution: {integrity: sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==} - engines: {node: '>=12'} + /jose/4.14.6: + resolution: {integrity: sha512-EqJPEUlZD0/CSUMubKtMaYUOtWe91tZXTWMJZoKSbLk+KtdhNdcvppH8lA9XwVu2V4Ailvsj0GBZJ2ZwDjfesQ==} dev: false /js-tokens/4.0.0: @@ -2652,12 +2433,6 @@ packages: js-tokens: 4.0.0 dev: false - /lower-case/2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - dependencies: - tslib: 2.6.1 - dev: false - /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -2665,11 +2440,6 @@ packages: yallist: 4.0.0 dev: false - /map-obj/4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: false - /map-obj/5.0.0: resolution: {integrity: sha512-2L3MIgJynYrZ3TYMriLDLWocz15okFakV6J12HXvMXDHui2x/zgChzg1u9mFFGbbGWE+GsLpQByt4POb9Or+uA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2741,6 +2511,21 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: false + /next-auth/0.0.0-manual.ffd05533_next@13.4.19+react@18.2.0: + resolution: {integrity: sha512-oTdpOP93rzABms/Qgp3z0udQG3tCZ3JxOCnwU04xLgX/xnC8+HuDHct7IcEpz+zxhZp6jxN0tdVkMCs5kubUfw==} + peerDependencies: + next: ^13.4.13 + nodemailer: ^6.6.5 + react: ^18.2.0 + peerDependenciesMeta: + nodemailer: + optional: true + dependencies: + '@auth/core': 0.13.0 + next: 13.4.19_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + dev: false + /next-themes/0.2.1_m2l4knchnqa6bzxbbtfxlzoxdy: resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} peerDependencies: @@ -2793,17 +2578,6 @@ packages: - babel-plugin-macros dev: false - /no-case/3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - dependencies: - lower-case: 2.0.2 - tslib: 2.6.1 - dev: false - - /node-fetch-native/1.0.1: - resolution: {integrity: sha512-VzW+TAk2wE4X9maiKMlT+GsPU4OMmR1U9CrHSmd3DFLn2IcZ9VJ6M6BBugGfYUnPCLSYxXdZy17M0BEJyhUTwg==} - dev: false - /node-gyp-build/4.6.0: resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} hasBin: true @@ -2827,6 +2601,10 @@ packages: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: false + /oauth4webapi/2.3.0: + resolution: {integrity: sha512-JGkb5doGrwzVDuHwgrR4nHJayzN4h59VCed6EW8Tql6iHDfZIabCJvg6wtbn5q6pyB2hZruI3b77Nudvq7NmvA==} + dev: false + /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -2974,10 +2752,6 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: false - /path-to-regexp/6.2.1: - resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} - dev: false - /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -3123,6 +2897,19 @@ packages: xtend: 4.0.2 dev: false + /preact-render-to-string/5.2.3_preact@10.11.3: + resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} + peerDependencies: + preact: '>=10' + dependencies: + preact: 10.11.3 + pretty-format: 3.8.0 + dev: false + + /preact/10.11.3: + resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} + dev: false + /prelude-ls/1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -3137,6 +2924,10 @@ packages: react-is: 18.2.0 dev: false + /pretty-format/3.8.0: + resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} + dev: false + /prop-types/15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: @@ -3154,17 +2945,6 @@ packages: engines: {node: '>=6'} dev: false - /pvtsutils/1.3.3: - resolution: {integrity: sha512-6sAOMlXyrJ+8tRN5IAaYfuYZRp1C2uJ0SyDynEFxL+VY8kCRib9Lpj/+KPaNFpaQWr/iRik5nrzz6iaNlxgEGA==} - dependencies: - tslib: 2.6.1 - dev: false - - /pvutils/1.1.3: - resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} - engines: {node: '>=6.0.0'} - dev: false - /querystringify/2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: false @@ -3173,11 +2953,6 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: false - /quick-lru/4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - dev: false - /quick-lru/6.1.1: resolution: {integrity: sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==} engines: {node: '>=12'} @@ -3414,30 +3189,6 @@ packages: engines: {node: '>=8'} dev: false - /snake-case/3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - dependencies: - dot-case: 3.0.4 - tslib: 2.6.1 - dev: false - - /snakecase-keys/3.2.1: - resolution: {integrity: sha512-CjU5pyRfwOtaOITYv5C8DzpZ8XA/ieRsDpr93HI2r6e3YInC6moZpSQbmUtg8cTk58tq2x3jcG2gv+p1IZGmMA==} - engines: {node: '>=8'} - dependencies: - map-obj: 4.3.0 - to-snake-case: 1.0.0 - dev: false - - /snakecase-keys/5.4.4: - resolution: {integrity: sha512-YTywJG93yxwHLgrYLZjlC75moVEX04LZM4FHfihjHe1FCXm+QaLOFfSf535aXOAd0ArVQMWUAe8ZPm4VtWyXaA==} - engines: {node: '>=12'} - dependencies: - map-obj: 4.3.0 - snake-case: 3.0.4 - type-fest: 2.19.0 - dev: false - /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -3571,15 +3322,6 @@ packages: engines: {node: '>= 0.4'} dev: false - /swr/2.2.0_react@18.2.0: - resolution: {integrity: sha512-AjqHOv2lAhkuUdIiBu9xbuettzAzWXmCEcLONNKJRba87WAefz8Ca9d6ds/SzrPc235n1IxWYdhJ2zF3MNUaoQ==} - peerDependencies: - react: ^16.11.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 - use-sync-external-store: 1.2.0_react@18.2.0 - dev: false - /symbol-tree/3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: false @@ -3641,10 +3383,6 @@ packages: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} dev: false - /to-no-case/1.0.2: - resolution: {integrity: sha512-Z3g735FxuZY8rodxV4gH7LxClE4H0hTIyHNIHdk+vpQxjLm0cwnKXq/OFVZ76SOQmto7txVcwSCwkU5kqp+FKg==} - dev: false - /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -3652,18 +3390,6 @@ packages: is-number: 7.0.0 dev: false - /to-snake-case/1.0.0: - resolution: {integrity: sha512-joRpzBAk1Bhi2eGEYBjukEWHOe/IvclOkiJl3DtA91jV6NwQ3MwXA4FHYeqk8BNp/D8bmi9tcNbRu/SozP0jbQ==} - dependencies: - to-space-case: 1.0.0 - dev: false - - /to-space-case/1.0.0: - resolution: {integrity: sha512-rLdvwXZ39VOn1IxGL3V6ZstoTbwLRckQmn/U8ZDLuWwIXNpuZDhQ3AiRUlhTbOXFVE9C+dR51wM0CBDhk31VcA==} - dependencies: - to-no-case: 1.0.2 - dev: false - /tough-cookie/4.1.3: resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} engines: {node: '>=6'} @@ -3709,10 +3435,6 @@ packages: strip-bom: 3.0.0 dev: false - /tslib/2.4.1: - resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} - dev: false - /tslib/2.6.1: resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} dev: false @@ -3734,11 +3456,6 @@ packages: engines: {node: '>=10'} dev: false - /type-fest/2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} - dev: false - /type-fest/4.2.0: resolution: {integrity: sha512-5zknd7Dss75pMSED270A1RQS3KloqRJA9XbXLe0eCxyw7xXFb3rd+9B0UQ/0E+LQT6lnrLviEolYORlRWamn4w==} engines: {node: '>=16'} @@ -3840,14 +3557,6 @@ packages: requires-port: 1.0.0 dev: false - /use-sync-external-store/1.2.0_react@18.2.0: - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 - dev: false - /utf-8-validate/6.0.3: resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} engines: {node: '>=6.14.2'} @@ -3880,16 +3589,6 @@ packages: graceful-fs: 4.2.11 dev: false - /webcrypto-core/1.7.7: - resolution: {integrity: sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g==} - dependencies: - '@peculiar/asn1-schema': 2.3.6 - '@peculiar/json-schema': 1.1.12 - asn1js: 3.0.5 - pvtsutils: 1.3.3 - tslib: 2.6.1 - dev: false - /webidl-conversions/7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} diff --git a/src/app/(auth-state)/layout.tsx b/src/app/(auth-state)/layout.tsx index 25e4f057..aad99a67 100644 --- a/src/app/(auth-state)/layout.tsx +++ b/src/app/(auth-state)/layout.tsx @@ -1,5 +1,5 @@ import AuthNav from '@/components/AuthNav'; -import { ClerkProvider } from '@clerk/nextjs'; +import { SessionProvider } from 'next-auth/react'; export default function RootLayout({ children, @@ -7,11 +7,11 @@ export default function RootLayout({ children: React.ReactNode }) { return ( - + {children}
-
+ ); } diff --git a/src/app/(auth-state)/sign-in/[[...sign-in]]/page.tsx b/src/app/(auth-state)/sign-in/[[...sign-in]]/page.tsx deleted file mode 100644 index 6cbbfaf7..00000000 --- a/src/app/(auth-state)/sign-in/[[...sign-in]]/page.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { cc } from '@/utility/css'; -import { SignIn } from '@clerk/nextjs'; - -export const runtime = 'edge'; - -export default function SignInPage() { - return ( -
- -
- ); -} diff --git a/src/app/(isr)/layout.tsx b/src/app/(isr)/layout.tsx index fc0cf2de..8871d883 100644 --- a/src/app/(isr)/layout.tsx +++ b/src/app/(isr)/layout.tsx @@ -1,7 +1,4 @@ -import SiteGrid from '@/components/SiteGrid'; -import ThemeSwitcher from '@/site/ThemeSwitcher'; -import { cc } from '@/utility/css'; -import Link from 'next/link'; +import Footer from '@/components/Footer'; export default function RootLayout({ children, @@ -11,23 +8,7 @@ export default function RootLayout({ return ( <> {children} - -
- - Admin - -
- - } - /> +