v1.1: Add CIDR subnet filtering and Agent filter in Devices page
This commit is contained in:
commit
966058e2fe
422 files changed
+54656
No files matched your search
@@ -0,0 +1,48 @@
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
import { cookies } from "next/headers";
|
||||
|
||||
const BACKEND_URL = process.env.NEXT_PUBLIC_API_URL || "http://127.0.0.1:3011";
|
||||
|
||||
export async function POST(req: NextRequest) {
|
||||
try {
|
||||
const cookieStore = await cookies();
|
||||
const token = cookieStore.get("token")?.value;
|
||||
|
||||
// Menerima JSON dari frontend (bukan multipart)
|
||||
const body = await req.json();
|
||||
|
||||
const headers = new Headers();
|
||||
headers.set("Content-Type", "application/json");
|
||||
if (token) {
|
||||
headers.set("Cookie", `token=${token}`);
|
||||
}
|
||||
req.headers.forEach((value, name) => {
|
||||
if (name.toLowerCase().startsWith("x-")) {
|
||||
headers.set(name, value);
|
||||
}
|
||||
});
|
||||
|
||||
const destinationUrl = `${BACKEND_URL}/api/auth/admin/create-external-user`;
|
||||
|
||||
const response = await fetch(destinationUrl, {
|
||||
method: "POST",
|
||||
headers,
|
||||
body: JSON.stringify(body),
|
||||
cache: "no-store",
|
||||
});
|
||||
|
||||
const responseBuffer = await response.arrayBuffer();
|
||||
return new NextResponse(responseBuffer, {
|
||||
status: response.status,
|
||||
headers: {
|
||||
"Content-Type": response.headers.get("content-type") || "application/json",
|
||||
},
|
||||
});
|
||||
} catch (err: any) {
|
||||
console.error("[Create External User Proxy] Error:", err.message);
|
||||
return NextResponse.json(
|
||||
{ ok: false, error: "Failed to connect to the server." },
|
||||
{ status: 502 }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
import { cookies } from "next/headers";
|
||||
|
||||
const BACKEND_URL = process.env.NEXT_PUBLIC_API_URL || "http://127.0.0.1:3011";
|
||||
|
||||
export async function POST(req: NextRequest) {
|
||||
try {
|
||||
const cookieStore = await cookies();
|
||||
const token = cookieStore.get("token")?.value;
|
||||
|
||||
// Baca body sebagai JSON (tidak ada multipart lagi)
|
||||
const body = await req.json();
|
||||
|
||||
const headers = new Headers();
|
||||
headers.set("Content-Type", "application/json");
|
||||
if (token) {
|
||||
headers.set("Cookie", `token=${token}`);
|
||||
}
|
||||
req.headers.forEach((value, name) => {
|
||||
if (name.toLowerCase().startsWith("x-")) {
|
||||
headers.set(name, value);
|
||||
}
|
||||
});
|
||||
|
||||
const destinationUrl = `${BACKEND_URL}/api/auth/admin/update-agent-user`;
|
||||
|
||||
const response = await fetch(destinationUrl, {
|
||||
method: "POST",
|
||||
headers,
|
||||
body: JSON.stringify(body),
|
||||
cache: "no-store",
|
||||
});
|
||||
|
||||
const responseBuffer = await response.arrayBuffer();
|
||||
return new NextResponse(responseBuffer, {
|
||||
status: response.status,
|
||||
headers: {
|
||||
"Content-Type": response.headers.get("content-type") || "application/json",
|
||||
},
|
||||
});
|
||||
} catch (err: any) {
|
||||
console.error("[Update Agent User Proxy] Error:", err.message);
|
||||
return NextResponse.json(
|
||||
{ ok: false, error: "Failed to connect to the server." },
|
||||
{ status: 502 }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
// src/app/api/auth/remove-profile-picture/route.ts
|
||||
// Next.js API Route — proxies remove-profile-picture ke backend Express.
|
||||
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
import { cookies } from "next/headers";
|
||||
|
||||
const BACKEND_URL = process.env.NEXT_PUBLIC_API_URL || "http://127.0.0.1:3001";
|
||||
|
||||
export async function POST(req: NextRequest) {
|
||||
try {
|
||||
const cookieStore = await cookies();
|
||||
const token = cookieStore.get("token")?.value;
|
||||
|
||||
const headers: HeadersInit = { "Content-Type": "application/json" };
|
||||
if (token) {
|
||||
headers["Cookie"] = `token=${token}`;
|
||||
}
|
||||
|
||||
const backendRes = await fetch(
|
||||
`${BACKEND_URL}/api/auth/remove-profile-picture`,
|
||||
{
|
||||
method: "POST",
|
||||
headers,
|
||||
}
|
||||
);
|
||||
|
||||
const contentType = backendRes.headers.get("content-type") || "";
|
||||
if (!contentType.includes("application/json")) {
|
||||
const text = await backendRes.text();
|
||||
console.error("[Remove-Picture Proxy] Backend returned non-JSON:", text.slice(0, 200));
|
||||
return NextResponse.json(
|
||||
{ error: `Server error (HTTP ${backendRes.status}): Please try again.` },
|
||||
{ status: backendRes.status }
|
||||
);
|
||||
}
|
||||
|
||||
const data = await backendRes.json();
|
||||
const response = NextResponse.json(data, { status: backendRes.status });
|
||||
|
||||
const setCookie = backendRes.headers.get("set-cookie");
|
||||
if (setCookie) {
|
||||
response.headers.set("set-cookie", setCookie);
|
||||
}
|
||||
|
||||
return response;
|
||||
} catch (err: any) {
|
||||
console.error("[Remove-Picture Proxy] Error:", err.message);
|
||||
return NextResponse.json(
|
||||
{ error: "Failed to connect to the server." },
|
||||
{ status: 502 }
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
import { cookies } from "next/headers";
|
||||
|
||||
const BACKEND_URL = process.env.NEXT_PUBLIC_API_URL || "http://127.0.0.1:3011";
|
||||
|
||||
export async function POST(req: NextRequest) {
|
||||
try {
|
||||
const cookieStore = await cookies();
|
||||
const token = cookieStore.get("token")?.value;
|
||||
|
||||
// Menerima JSON (base64 image) dari frontend
|
||||
const body = await req.json();
|
||||
|
||||
const headers = new Headers();
|
||||
headers.set("Content-Type", "application/json");
|
||||
if (token) {
|
||||
headers.set("Cookie", `token=${token}`);
|
||||
}
|
||||
req.headers.forEach((value, name) => {
|
||||
if (name.toLowerCase().startsWith("x-")) {
|
||||
headers.set(name, value);
|
||||
}
|
||||
});
|
||||
|
||||
const destinationUrl = `${BACKEND_URL}/api/auth/upload-profile-picture`;
|
||||
|
||||
const response = await fetch(destinationUrl, {
|
||||
method: "POST",
|
||||
headers,
|
||||
body: JSON.stringify(body),
|
||||
cache: "no-store",
|
||||
});
|
||||
|
||||
const responseBuffer = await response.arrayBuffer();
|
||||
return new NextResponse(responseBuffer, {
|
||||
status: response.status,
|
||||
headers: {
|
||||
"Content-Type": response.headers.get("content-type") || "application/json",
|
||||
},
|
||||
});
|
||||
} catch (err: any) {
|
||||
console.error("[Upload Profile Picture Proxy] Error:", err.message);
|
||||
return NextResponse.json(
|
||||
{ error: "Failed to connect to the server." },
|
||||
{ status: 502 }
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user