Added /users/me route, and handling auth in frontend
This commit is contained in:
43
frontend/middleware.ts
Normal file
43
frontend/middleware.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
import { ApiResponse } from "./hooks/use-api";
|
||||
import { API_URL } from "./lib/constants";
|
||||
import IUser from "./interfaces/IUser";
|
||||
|
||||
export async function middleware(request: NextRequest) {
|
||||
const sessionCookie = request.cookies.get("auth_token")?.value;
|
||||
if (!sessionCookie) {
|
||||
return NextResponse.redirect(
|
||||
new URL(
|
||||
`/login?redirectTo=${encodeURIComponent(request.url)}`,
|
||||
request.url,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
const res = await fetch(`${API_URL}/users/me`, {
|
||||
headers: { Authorization: `Bearer ${sessionCookie}` },
|
||||
});
|
||||
const js: ApiResponse<IUser> = await res.json();
|
||||
if (js.status === "Error")
|
||||
return NextResponse.redirect(
|
||||
new URL(
|
||||
`/login?redirectTo=${encodeURIComponent(request.url)}`,
|
||||
request.url,
|
||||
),
|
||||
);
|
||||
} catch (e: any) {
|
||||
return NextResponse.redirect(
|
||||
new URL(
|
||||
`/login?redirectTo=${encodeURIComponent(request.url)}`,
|
||||
request.url,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
return NextResponse.next();
|
||||
}
|
||||
|
||||
export const config = {
|
||||
matcher: ["/dashboard/:path*"],
|
||||
};
|
||||
Reference in New Issue
Block a user