This commit is contained in:
+18
-13
@@ -13,12 +13,20 @@ import {
|
||||
|
||||
const intlMiddleware = createMiddleware(routing);
|
||||
|
||||
function isRootBasicAuthConfigured(): boolean {
|
||||
return Boolean(process.env.ROOT_BASIC_AUTH_USER && process.env.ROOT_BASIC_AUTH_PASS);
|
||||
function getAdminBasicAuthUser(): string {
|
||||
return process.env.ADMIN_BASIC_AUTH_USER ?? "";
|
||||
}
|
||||
|
||||
function isRootBasicAuthValid(request: NextRequest): boolean {
|
||||
if (!isRootBasicAuthConfigured()) {
|
||||
function getAdminBasicAuthPass(): string {
|
||||
return process.env.ADMIN_BASIC_AUTH_PASS ?? "";
|
||||
}
|
||||
|
||||
function isAdminBasicAuthConfigured(): boolean {
|
||||
return Boolean(getAdminBasicAuthUser() && getAdminBasicAuthPass());
|
||||
}
|
||||
|
||||
function isAdminBasicAuthValid(request: NextRequest): boolean {
|
||||
if (!isAdminBasicAuthConfigured()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -37,10 +45,7 @@ function isRootBasicAuthValid(request: NextRequest): boolean {
|
||||
const user = decoded.slice(0, index);
|
||||
const pass = decoded.slice(index + 1);
|
||||
|
||||
return (
|
||||
user === process.env.ROOT_BASIC_AUTH_USER &&
|
||||
pass === process.env.ROOT_BASIC_AUTH_PASS
|
||||
);
|
||||
return user === getAdminBasicAuthUser() && pass === getAdminBasicAuthPass();
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
@@ -52,7 +57,7 @@ export default async function middleware(request: NextRequest) {
|
||||
request.headers.get("x-forwarded-host") ?? request.headers.get("host") ?? request.nextUrl.hostname,
|
||||
);
|
||||
const isAdminRequest = isAdminHost(hostname);
|
||||
const rootRobotsHeaders = {
|
||||
const adminRobotsHeaders = {
|
||||
"X-Robots-Tag": "noindex, nofollow, noarchive, nosnippet, noimageindex",
|
||||
};
|
||||
|
||||
@@ -63,12 +68,12 @@ export default async function middleware(request: NextRequest) {
|
||||
}
|
||||
|
||||
if (isAdminRequest) {
|
||||
if (isRootBasicAuthConfigured() && !isRootBasicAuthValid(request)) {
|
||||
if (isAdminBasicAuthConfigured() && !isAdminBasicAuthValid(request)) {
|
||||
return new NextResponse("Authentication required", {
|
||||
status: 401,
|
||||
headers: {
|
||||
"WWW-Authenticate": 'Basic realm="Root Area", charset="UTF-8"',
|
||||
...rootRobotsHeaders,
|
||||
"WWW-Authenticate": 'Basic realm="Admin Area", charset="UTF-8"',
|
||||
...adminRobotsHeaders,
|
||||
},
|
||||
});
|
||||
}
|
||||
@@ -77,7 +82,7 @@ export default async function middleware(request: NextRequest) {
|
||||
rewriteUrl.pathname = toInternalAdminPath(pathname);
|
||||
|
||||
const response = NextResponse.rewrite(rewriteUrl);
|
||||
response.headers.set("X-Robots-Tag", rootRobotsHeaders["X-Robots-Tag"]);
|
||||
response.headers.set("X-Robots-Tag", adminRobotsHeaders["X-Robots-Tag"]);
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user