Compare commits

...

4 Commits

Author SHA1 Message Date
regalijan 3041d8cd27 Handle missing signature values
Test, Build, Deploy / Test, Build, and Deploy (push) Successful in 1m8s
Test, Build, Deploy / Create Sentry Release (push) Successful in 6s
2026-07-02 00:46:24 -04:00
regalijan 4451c192d2 Correct response code + user id property
Test, Build, Deploy / Test, Build, and Deploy (push) Successful in 1m32s
Test, Build, Deploy / Create Sentry Release (push) Successful in 8s
2026-07-02 00:38:37 -04:00
regalijan b33bf757e2 Bump node version 2026-07-02 00:38:18 -04:00
regalijan 10c1e741a9 Bump dependencies 2026-07-02 00:38:00 -04:00
4 changed files with 490 additions and 902 deletions
+1 -1
View File
@@ -1 +1 @@
v24.15.0 v24.18.0
+5 -3
View File
@@ -10,7 +10,7 @@ export async function onRequestPost(context: RequestContext) {
const sigHeader = context.request.headers.get("roblox-signature"); const sigHeader = context.request.headers.get("roblox-signature");
if (!sigHeader) return jsonError("Missing signature", 401); if (!sigHeader) return jsonError("Missing signature header", 400);
const [timestamp, sig] = sigHeader.split(","); const [timestamp, sig] = sigHeader.split(",");
@@ -20,6 +20,8 @@ export async function onRequestPost(context: RequestContext) {
) )
return jsonError("This request is stale", 406); return jsonError("This request is stale", 406);
if (!sig) return jsonError("Missing signature value", 401);
const textEncode = (text: string) => new TextEncoder().encode(text); const textEncode = (text: string) => new TextEncoder().encode(text);
const key = await crypto.subtle.importKey( const key = await crypto.subtle.importKey(
"raw", "raw",
@@ -40,7 +42,7 @@ export async function onRequestPost(context: RequestContext) {
textEncode(`${timestamp.replace("t=", "")}.${body}`), textEncode(`${timestamp.replace("t=", "")}.${body}`),
)) ))
) )
return jsonError("Invalid signature", 403); return jsonError("Invalid signature", 401);
const data = JSON.parse(body); const data = JSON.parse(body);
@@ -53,7 +55,7 @@ export async function onRequestPost(context: RequestContext) {
return jsonError("Invalid event type", 400); return jsonError("Invalid event type", 400);
const { prisma } = context.data; const { prisma } = context.data;
const userId = data.EventPrisma.UserId; const userId = data.EventPayload.UserId;
if (typeof userId !== "number") return jsonError("Invalid user id", 400); if (typeof userId !== "number") return jsonError("Invalid user id", 400);
+469 -883
View File
File diff suppressed because it is too large Load Diff
+15 -15
View File
@@ -10,37 +10,37 @@
"publish": "remix build --sourcemap && wrangler pages deploy --upload-source-maps public" "publish": "remix build --sourcemap && wrangler pages deploy --upload-source-maps public"
}, },
"dependencies": { "dependencies": {
"@chakra-ui/react": "^2.10.9", "@chakra-ui/react": "^2.10.10",
"@emotion/react": "^11.14.0", "@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1", "@emotion/styled": "^11.14.1",
"@fontsource-variable/plus-jakarta-sans": "^5.2.8", "@fontsource-variable/plus-jakarta-sans": "^5.2.8",
"@prisma/adapter-d1": "^7.8.0", "@prisma/adapter-d1": "^7.8.0",
"@prisma/client": "^7.8.0", "@prisma/client": "^7.8.0",
"@remix-run/cloudflare": "^2.17.4", "@remix-run/cloudflare": "^2.17.5",
"@remix-run/cloudflare-pages": "^2.17.4", "@remix-run/cloudflare-pages": "^2.17.5",
"@remix-run/react": "^2.17.4", "@remix-run/react": "^2.17.5",
"@sentry/cloudflare": "^10.52.0", "@sentry/cloudflare": "^10.63.0",
"@sentry/remix": "^10.52.0", "@sentry/remix": "^10.63.0",
"aws4fetch": "^1.0.20", "aws4fetch": "^1.0.20",
"dayjs": "^1.11.20", "dayjs": "^1.11.21",
"framer-motion": "^12.38.0", "framer-motion": "^12.42.2",
"react": "^18.3.1", "react": "^18.3.1",
"react-big-calendar": "^1.19.4", "react-big-calendar": "^1.20.0",
"react-dom": "^18.3.1" "react-dom": "^18.3.1"
}, },
"devDependencies": { "devDependencies": {
"@remix-run/dev": "^2.17.4", "@remix-run/dev": "^2.17.5",
"@types/node": "^24.12.3", "@types/node": "^24.13.2",
"@types/react": "^18.3.28", "@types/react": "^18.3.31",
"@types/react-big-calendar": "^1.16.3", "@types/react-big-calendar": "^1.16.3",
"@types/react-dom": "^18.3.7", "@types/react-dom": "^18.3.7",
"dotenv": "^17.4.1", "dotenv": "^17.4.2",
"prettier": "^3.8.3", "prettier": "^3.9.4",
"prisma": "^7.8.0", "prisma": "^7.8.0",
"typescript": "^5.9.3" "typescript": "^5.9.3"
}, },
"overrides": { "overrides": {
"@cloudflare/workers-types": "^4.20260511.1" "@cloudflare/workers-types": "^4.20260702.1"
}, },
"prettier": { "prettier": {
"endOfLine": "auto" "endOfLine": "auto"