Skip to content

Commit 18a9e25

Browse files
committed
feat: added rainbowkit and modified next-auth options
1 parent ed08550 commit 18a9e25

File tree

3 files changed

+138
-16
lines changed

3 files changed

+138
-16
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
"@fontsource/inter": "^5.0.3",
1818
"@next-auth/prisma-adapter": "^1.0.7",
1919
"@prisma/client": "^5.0.0",
20+
"@rainbow-me/rainbowkit": "^1.0.8",
21+
"@rainbow-me/rainbowkit-siwe-next-auth": "^0.3.0",
2022
"@tanstack/react-query": "^4.29.19",
2123
"@trpc/client": "^10.33.0",
2224
"@trpc/next": "^10.33.0",

src/server/auth.ts

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import CredentialsProvider from "next-auth/providers/credentials";
1313
import { SiweMessage } from "siwe";
1414
import { getCsrfToken } from "next-auth/react";
1515
import type { Session } from "next-auth";
16+
import { PrismaAdapter } from "@next-auth/prisma-adapter";
17+
import { env } from "@/env.mjs";
1618

1719
// Types
1820
// ========================================================
@@ -50,12 +52,20 @@ export const authOptions: (ctxReq: CtxOrReq) => NextAuthOptions = ({
5052
}) => ({
5153
callbacks: {
5254
// token.sub will refer to the id of the wallet address
53-
session: ({ session, token }) =>
55+
// session: ({ session, token }) =>
56+
// ({
57+
// ...session,
58+
// user: {
59+
// ...session.user,
60+
// id: token.sub,
61+
// },
62+
// } as Session & { user: { id: string } }),
63+
session: ({ session, user }) =>
5464
({
5565
...session,
5666
user: {
5767
...session.user,
58-
id: token.sub,
68+
id: user.id,
5969
},
6070
} as Session & { user: { id: string } }),
6171
// OTHER CALLBACKS to take advantage of but not needed
@@ -66,7 +76,6 @@ export const authOptions: (ctxReq: CtxOrReq) => NextAuthOptions = ({
6676
// profile?: Profile
6777
// // Not user
6878
// email?: {
69-
// verificationRequest?: boolean
7079
// }
7180
// /** If Credentials provider is used, it contains the user credentials */
7281
// credentials?: Record<string, CredentialInput>
@@ -95,8 +104,9 @@ export const authOptions: (ctxReq: CtxOrReq) => NextAuthOptions = ({
95104
// }
96105
},
97106
// OTHER OPTIONS (not needed)
107+
session: { strategy: "jwt" },
98108
secret: process.env.NEXTAUTH_SECRET, // in case you want pass this along for other functionality
99-
// adapter: PrismaAdapter(prisma), // Not meant for type 'credentials' (used for db sessions)
109+
adapter: PrismaAdapter(prisma), // Not meant for type 'credentials' (used for db sessions)
100110
// jwt: { // Custom functionlaity for jwt encoding/decoding
101111
// encode: async ({ token, secret, maxAge }: JWTEncodeParams) => {
102112
// return encode({
@@ -109,13 +119,6 @@ export const authOptions: (ctxReq: CtxOrReq) => NextAuthOptions = ({
109119
// return decode({ token, secret })
110120
// }
111121
// },
112-
session: {
113-
// Credentials defaults to this strategy
114-
strategy: "jwt",
115-
// maxAge: 2592000,
116-
// updateAge: 86400,
117-
// generateSessionToken: () => 'SomeValue'
118-
},
119122
// events: { // Callback events
120123
// signIn: async (message: {
121124
// user: User
@@ -166,8 +169,11 @@ export const authOptions: (ctxReq: CtxOrReq) => NextAuthOptions = ({
166169
const nonce = await getCsrfToken({ req: { headers: req?.headers } });
167170
// const nonce = await getCsrfToken({ req });
168171

172+
const nextAuthUrl = new URL(env.NEXTAUTH_URL);
173+
169174
const verified = await siwe.verify({
170175
signature: credentials?.signature || "",
176+
domain: nextAuthUrl.host,
171177
nonce,
172178
});
173179

@@ -205,8 +211,8 @@ export const authOptions: (ctxReq: CtxOrReq) => NextAuthOptions = ({
205211
return {
206212
// Pass user id instead of address
207213
// id: fields.address
208-
// id: user.id,
209-
...user,
214+
id: user.id,
215+
// ...user,
210216
};
211217
} catch (error) {
212218
// Uncomment or add logging if needed

yarn.lock

Lines changed: 117 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1105,6 +1105,11 @@
11051105
"@emotion/weak-memoize" "^0.3.1"
11061106
stylis "4.2.0"
11071107

1108+
"@emotion/hash@^0.8.0":
1109+
version "0.8.0"
1110+
resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413"
1111+
integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==
1112+
11081113
"@emotion/hash@^0.9.1":
11091114
version "0.9.1"
11101115
resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43"
@@ -1612,6 +1617,23 @@
16121617
resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.0.0.tgz#5249650eabe77c458c90f2be97d8210353c2e22e"
16131618
integrity sha512-kyT/8fd0OpWmhAU5YnY7eP31brW1q1YrTGoblWrhQJDiN/1K+Z8S1kylcmtjqx5wsUGcP1HBWutayA/jtyt+sg==
16141619

1620+
"@rainbow-me/rainbowkit-siwe-next-auth@^0.3.0":
1621+
version "0.3.0"
1622+
resolved "https://registry.yarnpkg.com/@rainbow-me/rainbowkit-siwe-next-auth/-/rainbowkit-siwe-next-auth-0.3.0.tgz#780c267877c5c54f80316593745c8be40369222c"
1623+
integrity sha512-8qj2O7egeWLMHwZSDN9SBo6n1t+nAlVEdLij6D7eOKmBrvkv4ruuhJm1RHACllgxqBeIsMmfvJSjTG8GR+ZdUw==
1624+
1625+
"@rainbow-me/rainbowkit@^1.0.8":
1626+
version "1.0.8"
1627+
resolved "https://registry.yarnpkg.com/@rainbow-me/rainbowkit/-/rainbowkit-1.0.8.tgz#280b3c572118957cdcfd6e54bc5bea12f969d980"
1628+
integrity sha512-m1B9/X3p8MLmj4fDfs2NpJlFRmKz7vOR0jmcdBw2SMFzXqP1FQFQc4pjvtLEeyfEUGSNNceGrecFZRVS0Qk//A==
1629+
dependencies:
1630+
"@vanilla-extract/css" "1.9.1"
1631+
"@vanilla-extract/dynamic" "2.0.2"
1632+
"@vanilla-extract/sprinkles" "1.5.0"
1633+
clsx "1.1.1"
1634+
qrcode "1.5.0"
1635+
react-remove-scroll "2.5.4"
1636+
16151637
"@rushstack/eslint-patch@^1.1.3":
16161638
version "1.3.2"
16171639
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz#31b9c510d8cada9683549e1dbb4284cca5001faf"
@@ -2258,6 +2280,40 @@
22582280
"@typescript-eslint/types" "5.60.1"
22592281
eslint-visitor-keys "^3.3.0"
22602282

2283+
"@vanilla-extract/[email protected]":
2284+
version "1.9.1"
2285+
resolved "https://registry.yarnpkg.com/@vanilla-extract/css/-/css-1.9.1.tgz#337b79faa5f8f98915a90c3fe3c30b54be746c09"
2286+
integrity sha512-pu2SFiff5jRhPwvGoj8cM5l/qIyLvigOmy22ss5DGjwV5pJYezRjDLxWumi2luIwioMWvh9EozCjyfH8nq+7fQ==
2287+
dependencies:
2288+
"@emotion/hash" "^0.8.0"
2289+
"@vanilla-extract/private" "^1.0.3"
2290+
ahocorasick "1.0.2"
2291+
chalk "^4.1.1"
2292+
css-what "^5.0.1"
2293+
cssesc "^3.0.0"
2294+
csstype "^3.0.7"
2295+
deep-object-diff "^1.1.0"
2296+
deepmerge "^4.2.2"
2297+
media-query-parser "^2.0.2"
2298+
outdent "^0.8.0"
2299+
2300+
"@vanilla-extract/[email protected]":
2301+
version "2.0.2"
2302+
resolved "https://registry.yarnpkg.com/@vanilla-extract/dynamic/-/dynamic-2.0.2.tgz#13a3e461964c8029a52e6b6b631009ca6a8b27f5"
2303+
integrity sha512-U4nKaEQ8Kuz+exXEr51DUpyaOuzo24/S/k1YbDPQR06cYcNjQqvwFRnwWtZ+9ImocqM1wTKtzrdUgSTtLGIwAg==
2304+
dependencies:
2305+
"@vanilla-extract/private" "^1.0.3"
2306+
2307+
"@vanilla-extract/private@^1.0.3":
2308+
version "1.0.3"
2309+
resolved "https://registry.yarnpkg.com/@vanilla-extract/private/-/private-1.0.3.tgz#7ec72bc2ff6fe51f9d650f962e8d1989b073690f"
2310+
integrity sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==
2311+
2312+
"@vanilla-extract/[email protected]":
2313+
version "1.5.0"
2314+
resolved "https://registry.yarnpkg.com/@vanilla-extract/sprinkles/-/sprinkles-1.5.0.tgz#c921183ae518bb484299c2dc81f2acefd91c3dbe"
2315+
integrity sha512-W58f2Rzz5lLmk0jbhgStVlZl5wEiPB1Ur3fRvUaBM+MrifZ3qskmFq/CiH//fEYeG5Dh9vF1qRviMMH46cX9Nw==
2316+
22612317
"@vercel/postgres@^0.4.0":
22622318
version "0.4.0"
22632319
resolved "https://registry.yarnpkg.com/@vercel/postgres/-/postgres-0.4.0.tgz#e5683f3a29e49f23569937751cb0749f15915bb5"
@@ -2731,6 +2787,11 @@ aggregate-error@^3.0.0:
27312787
clean-stack "^2.0.0"
27322788
indent-string "^4.0.0"
27332789

2790+
2791+
version "1.0.2"
2792+
resolved "https://registry.yarnpkg.com/ahocorasick/-/ahocorasick-1.0.2.tgz#9eee93aef9d02bfb476d9b648d9b7a40ef2fd500"
2793+
integrity sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA==
2794+
27342795
ajv@^6.10.0, ajv@^6.12.4:
27352796
version "6.12.6"
27362797
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
@@ -3160,7 +3221,7 @@ chalk@^2.0.0:
31603221
escape-string-regexp "^1.0.5"
31613222
supports-color "^5.3.0"
31623223

3163-
chalk@^4.0.0, chalk@^4.1.0:
3224+
chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1:
31643225
version "4.1.2"
31653226
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
31663227
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@@ -3269,6 +3330,11 @@ cliui@^8.0.1:
32693330
strip-ansi "^6.0.1"
32703331
wrap-ansi "^7.0.0"
32713332

3333+
3334+
version "1.1.1"
3335+
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
3336+
integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
3337+
32723338
clsx@^1.1.0:
32733339
version "1.2.1"
32743340
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12"
@@ -3458,12 +3524,17 @@ [email protected]:
34583524
dependencies:
34593525
tiny-invariant "^1.0.6"
34603526

3527+
css-what@^5.0.1:
3528+
version "5.1.0"
3529+
resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe"
3530+
integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==
3531+
34613532
cssesc@^3.0.0:
34623533
version "3.0.0"
34633534
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
34643535
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
34653536

3466-
csstype@^3.0.11, csstype@^3.0.2:
3537+
csstype@^3.0.11, csstype@^3.0.2, csstype@^3.0.7:
34673538
version "3.1.2"
34683539
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
34693540
integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
@@ -3522,6 +3593,16 @@ deep-is@^0.1.3:
35223593
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
35233594
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
35243595

3596+
deep-object-diff@^1.1.0:
3597+
version "1.1.9"
3598+
resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.9.tgz#6df7ef035ad6a0caa44479c536ed7b02570f4595"
3599+
integrity sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==
3600+
3601+
deepmerge@^4.2.2:
3602+
version "4.3.1"
3603+
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
3604+
integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
3605+
35253606
default-browser-id@^3.0.0:
35263607
version "3.0.0"
35273608
resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c"
@@ -5554,6 +5635,13 @@ mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0:
55545635
dependencies:
55555636
"@types/mdast" "^3.0.0"
55565637

5638+
media-query-parser@^2.0.2:
5639+
version "2.0.2"
5640+
resolved "https://registry.yarnpkg.com/media-query-parser/-/media-query-parser-2.0.2.tgz#ff79e56cee92615a304a1c2fa4f2bd056c0a1d29"
5641+
integrity sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==
5642+
dependencies:
5643+
"@babel/runtime" "^7.12.5"
5644+
55575645
meow@^8.0.0:
55585646
version "8.1.2"
55595647
resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897"
@@ -6227,6 +6315,11 @@ optionator@^0.9.1:
62276315
type-check "^0.4.0"
62286316
word-wrap "^1.2.3"
62296317

6318+
outdent@^0.8.0:
6319+
version "0.8.0"
6320+
resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.8.0.tgz#2ebc3e77bf49912543f1008100ff8e7f44428eb0"
6321+
integrity sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==
6322+
62306323
p-limit@^2.2.0:
62316324
version "2.3.0"
62326325
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
@@ -6614,6 +6707,16 @@ q@^1.5.1:
66146707
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
66156708
integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
66166709

6710+
6711+
version "1.5.0"
6712+
resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.0.tgz#95abb8a91fdafd86f8190f2836abbfc500c72d1b"
6713+
integrity sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==
6714+
dependencies:
6715+
dijkstrajs "^1.0.1"
6716+
encode-utf8 "^1.0.3"
6717+
pngjs "^5.0.0"
6718+
yargs "^15.3.1"
6719+
66176720
[email protected], qrcode@^1.5.1:
66186721
version "1.5.3"
66196722
resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170"
@@ -6715,14 +6818,25 @@ react-is@^16.13.1, react-is@^16.7.0:
67156818
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
67166819
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
67176820

6718-
react-remove-scroll-bar@^2.3.4:
6821+
react-remove-scroll-bar@^2.3.3, react-remove-scroll-bar@^2.3.4:
67196822
version "2.3.4"
67206823
resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9"
67216824
integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==
67226825
dependencies:
67236826
react-style-singleton "^2.2.1"
67246827
tslib "^2.0.0"
67256828

6829+
6830+
version "2.5.4"
6831+
resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.4.tgz#afe6491acabde26f628f844b67647645488d2ea0"
6832+
integrity sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==
6833+
dependencies:
6834+
react-remove-scroll-bar "^2.3.3"
6835+
react-style-singleton "^2.2.1"
6836+
tslib "^2.1.0"
6837+
use-callback-ref "^1.3.0"
6838+
use-sidecar "^1.1.2"
6839+
67266840
react-remove-scroll@^2.5.5:
67276841
version "2.5.6"
67286842
resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz#7510b8079e9c7eebe00e65a33daaa3aa29a10336"

0 commit comments

Comments
 (0)