mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
feat(drag-n-drop): add support for drag n drop projects via zip #131
This commit is contained in:
@@ -12,6 +12,11 @@ import { db } from "@/server/db";
|
||||
import type { OpenApiMeta } from "@dokploy/trpc-openapi";
|
||||
import { TRPCError, initTRPC } from "@trpc/server";
|
||||
import type { CreateNextContextOptions } from "@trpc/server/adapters/next";
|
||||
import {
|
||||
experimental_createMemoryUploadHandler,
|
||||
experimental_isMultipartFormDataRequest,
|
||||
experimental_parseMultipartFormData,
|
||||
} from "@trpc/server/adapters/node-http/content-type/form-data";
|
||||
import type { Session, User } from "lucia";
|
||||
import superjson from "superjson";
|
||||
import { ZodError } from "zod";
|
||||
@@ -158,6 +163,24 @@ export const protectedProcedure = t.procedure.use(({ ctx, next }) => {
|
||||
});
|
||||
});
|
||||
|
||||
export const uploadProcedure = async (opts: any) => {
|
||||
if (!experimental_isMultipartFormDataRequest(opts.ctx.req)) {
|
||||
return opts.next();
|
||||
}
|
||||
|
||||
const formData = await experimental_parseMultipartFormData(
|
||||
opts.ctx.req,
|
||||
experimental_createMemoryUploadHandler({
|
||||
// 2GB
|
||||
maxPartSize: 1024 * 1024 * 1024 * 2,
|
||||
}),
|
||||
);
|
||||
|
||||
return opts.next({
|
||||
rawInput: formData,
|
||||
});
|
||||
};
|
||||
|
||||
export const cliProcedure = t.procedure.use(({ ctx, next }) => {
|
||||
if (!ctx.session || !ctx.user || ctx.user.rol !== "admin") {
|
||||
throw new TRPCError({ code: "UNAUTHORIZED" });
|
||||
|
||||
Reference in New Issue
Block a user