Skip to content

Commit 2338d5f

Browse files
authored
Update token handling (#4054)
* Update token handling * add extra layer of verification * prettier
1 parent cf35bb2 commit 2338d5f

File tree

7 files changed

+57
-3
lines changed

7 files changed

+57
-3
lines changed

handlers/rays/dailyRays.ts

+13-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { getRaysDailyChallengeData, getRaysDailyChallengeDateFormat } from 'helpers/dailyRays'
22
import type { NextApiHandler } from 'next'
3+
import { verifyAccessToken } from 'pages/api/auth/check-auth'
34
import { prisma } from 'server/prisma'
45

56
export const dailyRaysGetHandler: NextApiHandler = async (req, res) => {
@@ -8,7 +9,7 @@ export const dailyRaysGetHandler: NextApiHandler = async (req, res) => {
89
const { walletAddress } = req.query
910
const dailyChallengeData = await prisma.raysDailyChallenge.findUnique({
1011
where: {
11-
address: (walletAddress as string).toLocaleLowerCase(),
12+
address: (walletAddress as string).toLowerCase(),
1213
},
1314
})
1415
const calculatedData = getRaysDailyChallengeData(dailyChallengeData?.claimed_dates)
@@ -24,12 +25,22 @@ export const dailyRaysPostHandler: NextApiHandler = async (req, res) => {
2425
return res.status(400).end()
2526
}
2627

27-
const token = req.cookies[`token-${address.toLocaleLowerCase()}`]
28+
const token = req.cookies[`token-${address.toLowerCase()}`]
2829

2930
if (!token) {
3031
return res.status(401).json({ authenticated: false })
3132
}
3233

34+
const decoded = verifyAccessToken(token)
35+
36+
if (!decoded) {
37+
return res.status(401).json({ authenticated: false })
38+
}
39+
40+
if (decoded.address.toLowerCase() !== address.toLowerCase()) {
41+
return res.status(401).json({ authenticated: false })
42+
}
43+
3344
const usersOverview = await fetch(
3445
`${process.env.FUNCTIONS_API_URL}/api/portfolio/overview?address=${address}`,
3546
).then((usersOverviewRes) => usersOverviewRes.json())

handlers/risk/get.ts

+11
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { NextApiRequest, NextApiResponse } from 'next'
2+
import { verifyAccessToken } from 'pages/api/auth/check-auth'
23
import {
34
createRiskForAddress,
45
selectRiskForAddress,
@@ -109,6 +110,16 @@ export async function getRisk(req: NextApiRequest, res: NextApiResponse) {
109110
return res.status(401).json({ authenticated: false })
110111
}
111112

113+
const decoded = verifyAccessToken(token)
114+
115+
if (!decoded) {
116+
return res.status(401).json({ authenticated: false })
117+
}
118+
119+
if (decoded.address.toLowerCase() !== walletAddress.toLowerCase()) {
120+
return res.status(401).json({ authenticated: false })
121+
}
122+
112123
if (chainId !== 1) {
113124
return res.status(200).json({ isRisky: false })
114125
}

handlers/tos/get.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ export async function get(req: NextApiRequest, res: NextApiResponse) {
2222
} else {
2323
const decoded = verifyAccessToken(token)
2424

25-
if (decoded) {
25+
if (decoded?.address.toLowerCase() !== walletAddress.toLowerCase()) {
26+
authorized = false
27+
} else {
2628
authorized = true
2729
}
2830
}

handlers/tos/sign.ts

+4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ export async function sign(req: NextApiRequest, res: NextApiResponse) {
2323
return res.status(401).json({ authenticated: false })
2424
}
2525

26+
if (decoded.address.toLowerCase() !== walletAddress.toLowerCase()) {
27+
return res.status(401).json({ authenticated: false })
28+
}
29+
2630
const approvalData = {
2731
address: decoded.address,
2832
signature: decoded.signature,

handlers/vault/createOrUpdate.ts

+11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { VaultType } from '@prisma/client'
22
import type { NextApiRequest, NextApiResponse } from 'next'
3+
import { verifyAccessToken } from 'pages/api/auth/check-auth'
34
import { prisma } from 'server/prisma'
45
import * as z from 'zod'
56

@@ -23,6 +24,16 @@ export async function createOrUpdate(req: NextApiRequest, res: NextApiResponse)
2324
return res.status(401).json({ authenticated: false })
2425
}
2526

27+
const decoded = verifyAccessToken(token)
28+
29+
if (!decoded) {
30+
return res.status(401).json({ authenticated: false })
31+
}
32+
33+
if (decoded.address.toLowerCase() !== params.walletAddress.toLowerCase()) {
34+
return res.status(401).json({ authenticated: false })
35+
}
36+
2637
const vaultData = {
2738
vault_id: params.id,
2839
type: params.type as VaultType,

pages/api/auth/check-auth.ts

+4
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,9 @@ export default function checkAuthHandler(req: NextApiRequest, res: NextApiRespon
3131
return res.status(401).json({ authenticated: false })
3232
}
3333

34+
if (decoded.address.toLowerCase() !== walletAddress.toLowerCase()) {
35+
return res.status(401).json({ authenticated: false })
36+
}
37+
3438
return res.status(200).json({ authenticated: true })
3539
}

pages/api/user/create.tsx

+11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { User } from '@prisma/client'
22
import { getAddress } from 'ethers/lib/utils'
33
import type { NextApiHandler, NextApiRequest, NextApiResponse } from 'next'
4+
import { verifyAccessToken } from 'pages/api/auth/check-auth'
45
import { prisma } from 'server/prisma'
56
import * as z from 'zod'
67

@@ -33,6 +34,16 @@ const create = async (req: NextApiRequest, res: NextApiResponse) => {
3334
return res.status(401).json({ authenticated: false })
3435
}
3536

37+
const decoded = verifyAccessToken(token)
38+
39+
if (!decoded) {
40+
return res.status(401).json({ authenticated: false })
41+
}
42+
43+
if (decoded.address.toLowerCase() !== params.address.toLowerCase()) {
44+
return res.status(401).json({ authenticated: false })
45+
}
46+
3647
if (params.user_that_referred_address && !checksumAddress) {
3748
return res.status(401).json('referral-create/invalid-address')
3849
}

0 commit comments

Comments
 (0)