30 lines
711 B
TypeScript
30 lines
711 B
TypeScript
import "server-only";
|
|
|
|
import { getVideoStoryboardTaskDetail } from "@/lib/video-agent/task-store";
|
|
|
|
export class StoryboardTaskAccessError extends Error {
|
|
status: number;
|
|
|
|
constructor(message: string, status: number) {
|
|
super(message);
|
|
this.status = status;
|
|
}
|
|
}
|
|
|
|
export async function requireStoryboardTaskAccess(params: {
|
|
taskId: string;
|
|
userId: string;
|
|
}) {
|
|
const detail = await getVideoStoryboardTaskDetail(params.taskId);
|
|
if (!detail) {
|
|
throw new StoryboardTaskAccessError("任务不存在", 404);
|
|
}
|
|
|
|
if (String((detail.task as any).userId || "").trim() !== params.userId) {
|
|
throw new StoryboardTaskAccessError("无权访问该分镜任务", 403);
|
|
}
|
|
|
|
return detail;
|
|
}
|
|
|