Skip to content

Commit 38ff50e

Browse files
committed
updated getUserInfo
1 parent e769efb commit 38ff50e

3 files changed

Lines changed: 58 additions & 15 deletions

File tree

src/app/page.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ export default async function Home({
2323
searchParams,
2424
}: AuthProps): Promise<React.ReactNode> {
2525
const { text } = getPageDataBySearchParams(await searchParams);
26-
// const user = getUserOrRedirect(await headers());
2726

2827
return <div>{text["title"]}</div>;
2928
}

src/middleware.ts

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { type NextRequest, NextResponse } from "next/server";
2+
3+
import { logger } from "@/common";
4+
5+
import { getUserInfo, mapUserDataToClientData } from "./server";
6+
7+
export async function middleware(
8+
req: NextRequest,
9+
): Promise<NextResponse | undefined> {
10+
try {
11+
const url = new URL(req.url);
12+
const authUrl = new URL(url.origin + "/auth");
13+
14+
if (url.pathname === "/") {
15+
const cookie = req.headers.get("Cookie");
16+
17+
logger.log("Cookie: ", cookie);
18+
19+
if (!cookie) {
20+
return NextResponse.redirect(authUrl);
21+
}
22+
23+
const { data, error, headers } = await getUserInfo(cookie);
24+
25+
logger.log("Server error /get_user_info: ", error);
26+
27+
if (error?.key === "UNAUTHORIZED") {
28+
return NextResponse.redirect(authUrl);
29+
}
30+
31+
const setCookieHeader = headers.get("Set-Cookie");
32+
33+
logger.log("Set-Cookie /get_user_info", setCookieHeader);
34+
logger.log("Data /get_user_info: ", data);
35+
36+
const res = NextResponse.next();
37+
res.headers.set(
38+
"x-user-info",
39+
encodeURI(JSON.stringify(mapUserDataToClientData(data))),
40+
);
41+
42+
if (setCookieHeader) {
43+
res.headers.set("Set-Cookie", setCookieHeader);
44+
}
45+
46+
return res;
47+
}
48+
} catch {
49+
return NextResponse.next();
50+
}
51+
52+
return NextResponse.next();
53+
}

src/server/getUserInfo.ts

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,17 @@ import { makeRequest } from "@/common";
33
import type { HttpResponse } from "@/common/types";
44

55
interface Data {
6-
active_chat_id: number;
7-
email: string;
8-
first_name: string;
9-
last_name: string;
6+
permissions: string[];
7+
subscriptionEndDate: Date;
108
}
119

1210
export interface ClientData {
13-
activeChatId: number;
14-
email: string;
15-
firstName: string;
16-
lastName: string;
11+
permissions: string[];
12+
subscriptionEndDate: Date;
1713
}
1814

1915
export const mapDataToClientData = (data: Data): ClientData => {
20-
return {
21-
activeChatId: data.active_chat_id,
22-
email: data.email,
23-
firstName: data.first_name,
24-
lastName: data.last_name,
25-
};
16+
return data;
2617
};
2718

2819
export const getUserInfo = async (

0 commit comments

Comments
 (0)