diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index a1860717415..8c623ba3df9 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -34,28 +34,28 @@ jobs:
- name: run ${{ matrix.step }}
run: npm run ${{ matrix.step }}
- tests:
- needs: build
- runs-on: ubuntu-latest
- services:
- mongo:
- image: mongo
- ports:
- - 27017:27017
- strategy:
- fail-fast: false
- matrix:
- shardIndex: [1, 2, 3, 4, 5]
- shardTotal: [5]
- steps:
- - uses: actions/checkout@v4
- - uses: actions/setup-node@v4
- with:
- node-version: "18"
- cache: "npm"
- - name: install dependencies
- run: npm ci
- - name: Install Playwright's dependencies
- run: npx playwright install chromium
- - name: run tests
- run: npx playwright test --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
+ # tests:
+ # needs: build
+ # runs-on: ubuntu-latest
+ # services:
+ # mongo:
+ # image: mongo
+ # ports:
+ # - 27017:27017
+ # strategy:
+ # fail-fast: false
+ # matrix:
+ # shardIndex: [1, 2, 3, 4, 5]
+ # shardTotal: [5]
+ # steps:
+ # - uses: actions/checkout@v4
+ # - uses: actions/setup-node@v4
+ # with:
+ # node-version: "18"
+ # cache: "npm"
+ # - name: install dependencies
+ # run: npm ci
+ # - name: Install Playwright's dependencies
+ # run: npx playwright install chromium
+ # - name: run tests
+ # run: npx playwright test --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
diff --git a/components/layouts/MultiLayout.js b/components/layouts/MultiLayout.js
index bbc9ebba071..aa0bc125fa6 100644
--- a/components/layouts/MultiLayout.js
+++ b/components/layouts/MultiLayout.js
@@ -1,5 +1,3 @@
-import Navbar from "@components/navbar/Navbar";
-import Footer from "@components/Footer";
import SkipLink from "@components/SkipLink";
import Alert from "./Alert";
@@ -11,13 +9,11 @@ export default function MultiLayout({ settings, children }) {
{(!settings || !settings.hideNavbar) && (
<>
-
>
)}
{children}
- {(!settings || !settings.hideFooter) && }
>
);
diff --git a/middleware.js b/middleware.js
index af04e66d588..8c11e9c9186 100644
--- a/middleware.js
+++ b/middleware.js
@@ -1,108 +1,16 @@
-import { getToken } from "next-auth/jwt";
import { NextResponse } from "next/server";
// note: logger is not available in middleware, using console.log instead
export const config = {
- matcher: [
- "/",
-
- // account management
- "/account/:path*",
- "/api/account/:path*",
-
- // admin section
- "/admin/:path*",
- "/api/admin/:path*",
- ],
+ matcher: ["/:path*"],
};
export async function middleware(req) {
- const protocol = process.env.NODE_ENV === "development" ? "http" : "https";
- const hostname = req.headers.get("host");
- const reqPathName = req.nextUrl.pathname;
- const sessionRequired = ["/account", "/api/account"];
- const adminRequired = ["/admin", "/api/admin"];
- const adminUsers = process.env.ADMIN_USERS.split(",");
- const hostedDomain = process.env.NEXT_PUBLIC_BASE_URL.replace(
- /http:\/\/|https:\/\//,
- "",
- );
- const hostedDomains = [hostedDomain, `www.${hostedDomain}`];
-
- // if custom domain + on root path
- if (!hostedDomains.includes(hostname) && reqPathName === "/") {
- console.log(`custom domain used: "${hostname}"`);
-
- let res;
- let profile;
- let url = `${
- process.env.NEXT_PUBLIC_BASE_URL
- }/api/search/${encodeURIComponent(hostname)}`;
- try {
- res = await fetch(url, {
- method: "GET",
- headers: {
- "Content-Type": "application/json",
- },
- });
- profile = await res.json();
- } catch (e) {
- console.error(url, e);
- return NextResponse.error(e);
- }
-
- if (
- profile?.username &&
- profile.settings?.domain &&
- profile.settings.domain === hostname
- ) {
- console.log(
- `custom domain matched "${hostname}" for username "${profile.username}" (protocol: "${protocol}")`,
- );
- // if match found rewrite to custom domain and display profile page
- return NextResponse.rewrite(
- new URL(
- `/${profile.username}`,
- `${protocol}://${profile.settings.domain}`,
- ),
- );
- }
-
- console.error(`custom domain NOT matched "${hostname}"`);
- }
-
- // if not in sessionRequired or adminRequired, skip
- if (
- !sessionRequired
- .concat(adminRequired)
- .some((path) => reqPathName.startsWith(path))
- ) {
- return NextResponse.next();
- }
-
- const session = await getToken({
- req: req,
- secret: process.env.NEXTAUTH_SECRET,
- });
-
- // if no session reject request
- if (!session) {
- if (reqPathName.startsWith("/api")) {
- return NextResponse.json({}, { status: 401 });
- }
- return NextResponse.redirect(new URL("/auth/signin", req.url));
- }
+ const path = req.nextUrl.pathname;
- const username = session.username;
- // if admin request check user is allowed
- if (adminRequired.some((path) => reqPathName.startsWith(path))) {
- if (!adminUsers.includes(username)) {
- if (reqPathName.startsWith("/api")) {
- return NextResponse.json({}, { status: 401 });
- }
- return NextResponse.redirect(new URL("/404", req.url));
- }
+ if (path !== "/") {
+ return NextResponse.redirect(new URL(path, "https://github.com"));
}
return NextResponse.next();