Middleware for admin doesnt work or apply, meanwhile the one for next-intl yes.
Unanswered
West African Lion posted this in #help-forum
West African LionOP
Am i doing something wrong ? whenever i acces /es/admin, nothing happens and the admin page shows.
`
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
import createMiddleware from "next-intl/middleware";
import { locales, localePrefix, pathnames } from "./navigation";
const jwt = require("jsonwebtoken");
// Función para verificar si el usuario es válido
function esUsuarioValido(token: string): boolean {
try {
const secret = process.env.JWT_SECRET;
if (!secret) {
console.error("La clave secreta JWT no está definida.");
return false;
}
const decoded = jwt.verify(token, secret);
return !!decoded.isAdmin;
} catch (err) {
console.error("Error al verificar el token:", err);
return false;
}
}
// Middleware de autenticación
export function authMiddleware(request: NextRequest) {
// Verificar si la ruta es parte de las rutas de administración
if (request.nextUrl.pathname.startsWith("/es/admin")) {
const token = request.cookies.get("jwt") as unknown as string;
if (!token || !esUsuarioValido(token)) {
return NextResponse.redirect(new URL("/login", request.url));
}
// Autenticación exitosa, permitir acceso a la ruta
return NextResponse.next();
}
// Para rutas que no sean de administración, se permite el acceso normal
return NextResponse.next();
}
export const config = {
// Combina los matchers de ambos middlewares
matcher: ["/admin", "/(en|es|ar|fr)/:path*"],
};
// Combina los middlewares
export default createMiddleware({
locales,
localePrefix,
defaultLocale: "en",
pathnames,
});1 Reply
West African LionOP