WuYongJie f646b71813
Some checks failed
CI Check / check (push) Has been cancelled
chore: 初始化本地仓库并同步最近改动
2025-11-18 17:50:16 +08:00

40 lines
1.3 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server'
import { getServerSession } from 'next-auth'
import { authOptions } from '@/lib/auth'
import { featureFlags } from '@/lib/config'
import { prisma } from '@/lib/prisma'
async function ensureTunnelEnabled() {
if (featureFlags.tunnelEnabled) return true
const settings = await prisma.systemSettings.findFirst({
select: { enableTunnelService: true },
})
return !!settings?.enableTunnelService
}
export async function POST(req: NextRequest) {
try {
const session = await getServerSession(authOptions)
if (!session) return NextResponse.json({ error: '未登录' }, { status: 401 })
const isAdmin = (session.user as any)?.role === 'ADMIN'
const isSuperAdmin = (session.user as any)?.isSuperAdmin
if (!isAdmin || !isSuperAdmin) {
return NextResponse.json({ error: '仅最高权限账号可操作内网穿透' }, { status: 403 })
}
const enabled = await ensureTunnelEnabled()
if (!enabled) {
return NextResponse.json({ error: '内网穿透未启用' }, { status: 501 })
}
// TODO: 调用隧道提供商停止逻辑
return NextResponse.json({ message: '隧道已停止(占位)' })
} catch (e) {
console.error('Tunnel stop error:', e)
return NextResponse.json({ error: '服务异常' }, { status: 500 })
}
}