feat(domain): add duplicate feature
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import { NextRequest } from "next/server";
|
||||
|
||||
import { createDomain, getDomainByName } from "@/lib/dto/domains";
|
||||
import { checkUserStatus } from "@/lib/dto/user";
|
||||
import { getCurrentUser } from "@/lib/session";
|
||||
|
||||
export async function POST(req: NextRequest) {
|
||||
try {
|
||||
const user = checkUserStatus(await getCurrentUser());
|
||||
if (user instanceof Response) return user;
|
||||
if (user.role !== "ADMIN") {
|
||||
return Response.json("Unauthorized", { status: 401 });
|
||||
}
|
||||
|
||||
const { domain } = await req.json();
|
||||
if (!domain) {
|
||||
return Response.json("Domain name is required", { status: 400 });
|
||||
}
|
||||
|
||||
const target_domain = await getDomainByName(domain);
|
||||
if (!target_domain) {
|
||||
return Response.json("Domain not found", { status: 404 });
|
||||
}
|
||||
|
||||
const newDomain = await createDomain({
|
||||
domain_name: target_domain.domain_name + "-copy",
|
||||
enable_short_link: !!target_domain.enable_short_link,
|
||||
enable_email: !!target_domain.enable_email,
|
||||
enable_dns: !!target_domain.enable_dns,
|
||||
cf_zone_id: target_domain.cf_zone_id,
|
||||
cf_api_key: target_domain.cf_api_key,
|
||||
cf_email: target_domain.cf_email,
|
||||
cf_record_types: target_domain.cf_record_types,
|
||||
cf_api_key_encrypted: false,
|
||||
resend_api_key: target_domain.resend_api_key,
|
||||
max_short_links: target_domain.max_short_links,
|
||||
max_email_forwards: target_domain.max_email_forwards,
|
||||
max_dns_records: target_domain.max_dns_records,
|
||||
min_url_length: target_domain.min_url_length,
|
||||
min_email_length: target_domain.min_email_length,
|
||||
min_record_length: target_domain.min_record_length,
|
||||
active: true,
|
||||
});
|
||||
|
||||
if (!newDomain) {
|
||||
return Response.json("Failed to create domain", { status: 400 });
|
||||
}
|
||||
|
||||
return Response.json("Success", { status: 200 });
|
||||
} catch (error) {
|
||||
console.error("[Error]", error);
|
||||
return Response.json(error.message || "Server error", { status: 500 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user