import { getServerSession } from 'next-auth' import type { NextRequest } from 'next/server' import { authOptions } from '@/lib/auth' import { DINGTALK_PERFORMANCE_SESSION_HEADER, verifyDingtalkPerformanceSessionToken, } from '@/lib/dingtalk-performance-session' export async function getAuthenticatedUploadUserId(request: NextRequest): Promise { const session = await getServerSession(authOptions) const sessionUserId = String((session?.user as any)?.id || '').trim() if (sessionUserId) return sessionUserId const headerToken = request.headers.get(DINGTALK_PERFORMANCE_SESSION_HEADER) const authorization = request.headers.get('authorization') || '' const bearerToken = authorization.match(/^Bearer\s+(.+)$/i)?.[1]?.trim() const payload = verifyDingtalkPerformanceSessionToken(headerToken || bearerToken || null) return payload?.userId ? String(payload.userId).trim() : null }