re-enable middleware
Signed-off-by: Xe Iaso <me@xeiaso.net>
This commit is contained in:
parent
4acfeb0a93
commit
39de5ee75f
42
middleware.ts
Normal file
42
middleware.ts
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
import arcjet, { detectBot } from "@arcjet/next";
|
||||||
|
import { NextRequest, NextResponse } from "next/server";
|
||||||
|
|
||||||
|
export const config = {
|
||||||
|
// matcher tells Next.js which routes to run the middleware on.
|
||||||
|
// This runs the middleware on all routes except for static assets.
|
||||||
|
matcher: ["/((?!_next/static|_next/image|favicon.ico).*)"],
|
||||||
|
};
|
||||||
|
|
||||||
|
const aj = arcjet({
|
||||||
|
key: process.env.ARCJET_KEY!,
|
||||||
|
rules: [
|
||||||
|
detectBot({
|
||||||
|
mode: "LIVE",
|
||||||
|
allow: [
|
||||||
|
"CATEGORY:SEARCH_ENGINE",
|
||||||
|
"CATEGORY:PREVIEW",
|
||||||
|
"CATEGORY:SOCIAL",
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
export default async function middleware(request: NextRequest) {
|
||||||
|
console.log(request.headers);
|
||||||
|
|
||||||
|
// const decision = await aj.protect(request);
|
||||||
|
//
|
||||||
|
// if (
|
||||||
|
// // If this deny comes from a bot rule then block the request. You can
|
||||||
|
// // customize this logic to fit your needs e.g. changing the status code.
|
||||||
|
// decision.isDenied() &&
|
||||||
|
// decision.reason.isBot()
|
||||||
|
// ) {
|
||||||
|
// return NextResponse.json({ error: "Unauthorized" }, { status: 403 });
|
||||||
|
// } else if (decision.isErrored()) {
|
||||||
|
// console.warn("Arcjet error", decision.reason.message);
|
||||||
|
// return NextResponse.json({ error: "Bad request" }, { status: 400 });
|
||||||
|
// } else {
|
||||||
|
// return NextResponse.next();
|
||||||
|
// }
|
||||||
|
}
|
@ -1,40 +0,0 @@
|
|||||||
import arcjet, { detectBot } from "@arcjet/next";
|
|
||||||
import { NextRequest, NextResponse } from "next/server";
|
|
||||||
|
|
||||||
export const config = {
|
|
||||||
// matcher tells Next.js which routes to run the middleware on.
|
|
||||||
// This runs the middleware on all routes except for static assets.
|
|
||||||
matcher: ["/((?!_next/static|_next/image|favicon.ico).*)"],
|
|
||||||
};
|
|
||||||
|
|
||||||
const aj = arcjet({
|
|
||||||
key: process.env.ARCJET_KEY!,
|
|
||||||
rules: [
|
|
||||||
detectBot({
|
|
||||||
mode: "LIVE",
|
|
||||||
allow: [
|
|
||||||
"CATEGORY:SEARCH_ENGINE",
|
|
||||||
"CATEGORY:PREVIEW",
|
|
||||||
"CATEGORY:SOCIAL",
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
});
|
|
||||||
|
|
||||||
export default async function middleware(request: NextRequest) {
|
|
||||||
const decision = await aj.protect(request);
|
|
||||||
|
|
||||||
if (
|
|
||||||
// If this deny comes from a bot rule then block the request. You can
|
|
||||||
// customize this logic to fit your needs e.g. changing the status code.
|
|
||||||
decision.isDenied() &&
|
|
||||||
decision.reason.isBot()
|
|
||||||
) {
|
|
||||||
return NextResponse.json({ error: "Unauthorized" }, { status: 403 });
|
|
||||||
} else if (decision.isErrored()) {
|
|
||||||
console.warn("Arcjet error", decision.reason.message);
|
|
||||||
return NextResponse.json({ error: "Bad request" }, { status: 400 });
|
|
||||||
} else {
|
|
||||||
return NextResponse.next();
|
|
||||||
}
|
|
||||||
}
|
|
16
package-lock.json
generated
16
package-lock.json
generated
@ -27,7 +27,7 @@
|
|||||||
"@testing-library/dom": "^10.4.0",
|
"@testing-library/dom": "^10.4.0",
|
||||||
"@testing-library/jest-dom": "^6.5.0",
|
"@testing-library/jest-dom": "^6.5.0",
|
||||||
"@testing-library/react": "^16.0.1",
|
"@testing-library/react": "^16.0.1",
|
||||||
"@types/node": "^20",
|
"@types/node": "^20.16.10",
|
||||||
"@types/react": "^18",
|
"@types/react": "^18",
|
||||||
"@types/react-dom": "^18",
|
"@types/react-dom": "^18",
|
||||||
"concurrently": "^9.0.1",
|
"concurrently": "^9.0.1",
|
||||||
@ -3672,13 +3672,13 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "20.14.9",
|
"version": "20.16.10",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.10.tgz",
|
||||||
"integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==",
|
"integrity": "sha512-vQUKgWTjEIRFCvK6CyriPH3MZYiYlNy0fKiEYHWbcoWLEgs4opurGGKlebrTLqdSMIbXImH6XExNiIyNUv3WpA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~5.26.4"
|
"undici-types": "~6.19.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/prop-types": {
|
"node_modules/@types/prop-types": {
|
||||||
@ -13438,9 +13438,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/undici-types": {
|
"node_modules/undici-types": {
|
||||||
"version": "5.26.5",
|
"version": "6.19.8",
|
||||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
|
||||||
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
|
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
"@testing-library/dom": "^10.4.0",
|
"@testing-library/dom": "^10.4.0",
|
||||||
"@testing-library/jest-dom": "^6.5.0",
|
"@testing-library/jest-dom": "^6.5.0",
|
||||||
"@testing-library/react": "^16.0.1",
|
"@testing-library/react": "^16.0.1",
|
||||||
"@types/node": "^20",
|
"@types/node": "^20.16.10",
|
||||||
"@types/react": "^18",
|
"@types/react": "^18",
|
||||||
"@types/react-dom": "^18",
|
"@types/react-dom": "^18",
|
||||||
"concurrently": "^9.0.1",
|
"concurrently": "^9.0.1",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user