Skip to content

Commit 3f6172e

Browse files
committed
サーバーサイドのAPI Keyの実装の忘れ
1 parent 96f9e95 commit 3f6172e

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/app/api/clubs/[id]/route.ts

+16-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { auth } from "@/auth";
22
import Club from "@/models/Club";
33
import { NextResponse } from "next/server";
4+
import CryptoJS from "crypto-js";
45

56
export const dynamic = "force-dynamic";
67

@@ -12,19 +13,30 @@ export async function GET(request: Request, { params }: { params: Promise<{ id:
1213
if (clubRes.status !== 200) return NextResponse.json({ status: clubRes.status });
1314
const clubData = (await clubRes.json()) as Club;
1415
const session = await auth();
15-
if (!session && !((clubData.visible & 0x2) == 0x2))
16+
const apiKey = request.headers.get("X-Api-Key");
17+
const sessionEmail = apiKey
18+
? CryptoJS.AES.decrypt(apiKey, process.env.API_ROUTE_SECRET as string).toString(
19+
CryptoJS.enc.Utf8
20+
)
21+
: "";
22+
const checkEmail =
23+
sessionEmail &&
24+
(sessionEmail.endsWith("@nnn.ed.jp") ||
25+
sessionEmail.endsWith("@nnn.ac.jp") ||
26+
sessionEmail.endsWith("@n-jr.jp"));
27+
if (!(session || checkEmail) && !((clubData.visible & 0x2) == 0x2))
1628
return NextResponse.json({ error: "Forbidden" }, { status: 403 });
1729
const user_clubRes = await fetch(`${endpoint}/user_club/?filter1=club,eq,${id}`);
1830
const user_clubData = (
1931
(await user_clubRes.json()) as { records: [{ user: string }] }
2032
).records.map((record) => record.user);
2133
if (
22-
session &&
23-
!user_clubData.includes(session?.user?.email || "") &&
34+
(session || checkEmail) &&
35+
!user_clubData.includes(session?.user?.email || sessionEmail || "") &&
2436
!((clubData.visible & 0x1) == 0x1)
2537
)
2638
return NextResponse.json({ error: "Forbidden" }, { status: 403 });
27-
if (user_clubData.includes(session?.user?.email || "")) {
39+
if (user_clubData.includes(session?.user?.email || sessionEmail || "")) {
2840
clubData.owner = user_clubData;
2941
}
3042
return Response.json(clubData);

0 commit comments

Comments
 (0)