2026-05-25 14:31:58 +08:00

77 lines
1.8 KiB
TypeScript

import { NextResponse } from 'next/server';
import { mainPrisma } from '@/lib/db';
import { getAdminSession } from '@/lib/auth';
export async function GET(
request: Request,
{ params }: { params: Promise<{ projectCode: string }> }
) {
try {
const session = await getAdminSession();
const { projectCode } = await params;
if (!session) {
return NextResponse.json(
{ error: '未登录' },
{ status: 401 }
);
}
// 获取项目信息
const project = await mainPrisma.project.findUnique({
where: { code: projectCode },
});
if (!project) {
return NextResponse.json(
{ error: '项目不存在' },
{ status: 404 }
);
}
// 检查权限
const admin = await mainPrisma.admin.findUnique({
where: { id: session.id },
include: {
adminProjects: true,
},
});
if (!admin) {
return NextResponse.json(
{ error: '管理员不存在' },
{ status: 404 }
);
}
// 超管可以访问所有项目
if (!admin.isSuperAdmin) {
const hasAccess = admin.adminProjects.some(
(ap: { projectId: string }) => ap.projectId === project.id
);
if (!hasAccess) {
return NextResponse.json(
{ error: '无权访问此项目' },
{ status: 403 }
);
}
}
// 返回项目信息(不包含敏感的数据库连接信息)
return NextResponse.json({
id: project.id,
code: project.code,
name: project.name,
description: project.description,
isActive: project.isActive,
createdAt: project.createdAt,
});
} catch (error) {
console.error('获取项目信息失败:', error);
return NextResponse.json(
{ error: '服务器错误' },
{ status: 500 }
);
}
}