Skip to content

Commit 5c92677

Browse files
authored
fix: disable csp
1 parent 841b930 commit 5c92677

File tree

2 files changed

+2
-61
lines changed

2 files changed

+2
-61
lines changed

frontend/src/app/layout.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type { Metadata } from "next";
22
import { Space_Grotesk } from "next/font/google";
3-
import { headers } from "next/headers";
43
import Script from "next/script";
54
import type React from "react";
65

@@ -99,8 +98,6 @@ export default async function RootLayout({
9998
children: React.ReactNode;
10099
}) {
101100
const user = await auth({ disableThrow: true });
102-
const headersList = await headers();
103-
const nonce = headersList.get("x-nonce");
104101

105102
return (
106103
<html lang="pl" suppressHydrationWarning={true} className="scroll-smooth">
@@ -121,7 +118,6 @@ export default async function RootLayout({
121118
src="https://analytics.solvro.pl/script.js"
122119
data-website-id="ab126a0c-c0ab-401b-bf9d-da652aab69ec"
123120
data-domains="planer.solvro.pl"
124-
nonce={nonce ?? undefined}
125121
/>
126122
<Toaster richColors={true} />
127123
</body>

frontend/src/middleware.ts

Lines changed: 2 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -4,42 +4,6 @@ import { NextResponse } from "next/server";
44
import { auth } from "./lib/auth";
55

66
export async function middleware(request: NextRequest) {
7-
const nonce = Buffer.from(crypto.randomUUID()).toString("base64");
8-
const cspHeader = `
9-
default-src 'self' 'nonce-${nonce}' https://fonts.googleapis.com https://fonts.gstatic.com https://analytics.solvro.pl;
10-
script-src 'self' 'nonce-${nonce}' 'strict-dynamic' ${process.env.NODE_ENV === "development" ? "'unsafe-eval'" : ""} https://analytics.solvro.pl;
11-
style-src 'self' 'nonce-${nonce}';
12-
img-src 'self' blob: data: https://avatars.githubusercontent.com https://wit.pwr.edu.pl https://cms.solvro.pl https://apps.usos.pwr.edu.pl;
13-
font-src 'self';
14-
object-src 'none';
15-
base-uri 'self';
16-
form-action 'self';
17-
frame-ancestors 'none';
18-
upgrade-insecure-requests;
19-
`;
20-
21-
const contentSecurityPolicyHeaderValue = cspHeader
22-
.replaceAll(/\s{2,}/g, " ")
23-
.trim();
24-
25-
const requestHeaders = new Headers(request.headers);
26-
requestHeaders.set("x-nonce", nonce);
27-
28-
requestHeaders.set(
29-
"Content-Security-Policy",
30-
contentSecurityPolicyHeaderValue,
31-
);
32-
33-
const nextResponse = NextResponse.next({
34-
request: {
35-
headers: requestHeaders,
36-
},
37-
});
38-
nextResponse.headers.set(
39-
"Content-Security-Policy",
40-
contentSecurityPolicyHeaderValue,
41-
);
42-
437
const tokens = {
448
token: request.cookies.get("access_token")?.value,
459
secret: request.cookies.get("access_token_secret")?.value,
@@ -50,31 +14,12 @@ export async function middleware(request: NextRequest) {
5014
const user = await auth(tokens);
5115

5216
if (!isProtectedRoute) {
53-
return nextResponse;
17+
return NextResponse.next();
5418
}
5519

5620
if (user === null) {
5721
return NextResponse.redirect(new URL("/", request.url));
5822
}
5923

60-
return nextResponse;
24+
return NextResponse.next();
6125
}
62-
63-
export const config = {
64-
matcher: [
65-
/*
66-
* Match all request paths except for the ones starting with:
67-
* - api (API routes)
68-
* - _next/static (static files)
69-
* - _next/image (image optimization files)
70-
* - favicon.ico (favicon file)
71-
*/
72-
{
73-
source: "/((?!api|_next/static|_next/image|favicon.ico).*)",
74-
missing: [
75-
{ type: "header", key: "next-router-prefetch" },
76-
{ type: "header", key: "purpose", value: "prefetch" },
77-
],
78-
},
79-
],
80-
};

0 commit comments

Comments
 (0)