refactor(cloud): add validation to prevent create applications without server

This commit is contained in:
Mauricio Siu
2024-10-04 21:31:22 -06:00
parent 7c4987d84d
commit 09ef851372
8 changed files with 375 additions and 339 deletions

View File

@@ -67,6 +67,13 @@ export const applicationRouter = createTRPCRouter({
await checkServiceAccess(ctx.user.authId, input.projectId, "create");
}
if (IS_CLOUD && !input.serverId) {
throw new TRPCError({
code: "UNAUTHORIZED",
message: "You need to use a server to create an application",
});
}
const project = await findProjectById(input.projectId);
if (project.adminId !== ctx.user.adminId) {
throw new TRPCError({

View File

@@ -64,6 +64,13 @@ export const composeRouter = createTRPCRouter({
if (ctx.user.rol === "user") {
await checkServiceAccess(ctx.user.authId, input.projectId, "create");
}
if (IS_CLOUD && !input.serverId) {
throw new TRPCError({
code: "UNAUTHORIZED",
message: "You need to use a server to create a compose",
});
}
const project = await findProjectById(input.projectId);
if (project.adminId !== ctx.user.adminId) {
throw new TRPCError({
@@ -77,11 +84,7 @@ export const composeRouter = createTRPCRouter({
await addNewService(ctx.user.authId, newService.composeId);
}
} catch (error) {
throw new TRPCError({
code: "BAD_REQUEST",
message: "Error to create the compose",
cause: error,
});
throw error;
}
}),
@@ -347,6 +350,13 @@ export const composeRouter = createTRPCRouter({
await checkServiceAccess(ctx.user.authId, input.projectId, "create");
}
if (IS_CLOUD && !input.serverId) {
throw new TRPCError({
code: "UNAUTHORIZED",
message: "You need to use a server to create a compose",
});
}
const composeFile = await readTemplateComposeFile(input.id);
const generate = await loadTemplateModule(input.id as TemplatesKeys);

View File

@@ -25,6 +25,7 @@ import {
checkServiceAccess,
createMount,
findProjectById,
IS_CLOUD,
} from "@dokploy/builders";
export const mariadbRouter = createTRPCRouter({
@@ -36,6 +37,13 @@ export const mariadbRouter = createTRPCRouter({
await checkServiceAccess(ctx.user.authId, input.projectId, "create");
}
if (IS_CLOUD && !input.serverId) {
throw new TRPCError({
code: "UNAUTHORIZED",
message: "You need to use a server to create a mariadb",
});
}
const project = await findProjectById(input.projectId);
if (project.adminId !== ctx.user.adminId) {
throw new TRPCError({
@@ -61,11 +69,7 @@ export const mariadbRouter = createTRPCRouter({
if (error instanceof TRPCError) {
throw error;
}
throw new TRPCError({
code: "BAD_REQUEST",
message: "Error input: Inserting mariadb database",
cause: error,
});
throw error;
}
}),
one: protectedProcedure

View File

@@ -25,6 +25,7 @@ import {
stopService,
stopServiceRemote,
findProjectById,
IS_CLOUD,
} from "@dokploy/builders";
export const mongoRouter = createTRPCRouter({
@@ -36,6 +37,13 @@ export const mongoRouter = createTRPCRouter({
await checkServiceAccess(ctx.user.authId, input.projectId, "create");
}
if (IS_CLOUD && !input.serverId) {
throw new TRPCError({
code: "UNAUTHORIZED",
message: "You need to use a server to create a mongo",
});
}
const project = await findProjectById(input.projectId);
if (project.adminId !== ctx.user.adminId) {
throw new TRPCError({

View File

@@ -27,6 +27,7 @@ import {
stopService,
stopServiceRemote,
findProjectById,
IS_CLOUD,
} from "@dokploy/builders";
export const mysqlRouter = createTRPCRouter({
@@ -37,6 +38,14 @@ export const mysqlRouter = createTRPCRouter({
if (ctx.user.rol === "user") {
await checkServiceAccess(ctx.user.authId, input.projectId, "create");
}
if (IS_CLOUD && !input.serverId) {
throw new TRPCError({
code: "UNAUTHORIZED",
message: "You need to use a server to create a mysql",
});
}
1;
const project = await findProjectById(input.projectId);
if (project.adminId !== ctx.user.adminId) {
throw new TRPCError({

View File

@@ -25,6 +25,7 @@ import {
removePostgresById,
updatePostgresById,
findProjectById,
IS_CLOUD,
} from "@dokploy/builders";
export const postgresRouter = createTRPCRouter({
@@ -36,6 +37,13 @@ export const postgresRouter = createTRPCRouter({
await checkServiceAccess(ctx.user.authId, input.projectId, "create");
}
if (IS_CLOUD && !input.serverId) {
throw new TRPCError({
code: "UNAUTHORIZED",
message: "You need to use a server to create a postgres",
});
}
const project = await findProjectById(input.projectId);
if (project.adminId !== ctx.user.adminId) {
throw new TRPCError({

View File

@@ -39,6 +39,13 @@ export const redisRouter = createTRPCRouter({
await checkServiceAccess(ctx.user.authId, input.projectId, "create");
}
if (IS_CLOUD && !input.serverId) {
throw new TRPCError({
code: "UNAUTHORIZED",
message: "You need to use a server to create a redis",
});
}
const project = await findProjectById(input.projectId);
if (project.adminId !== ctx.user.adminId) {
throw new TRPCError({
@@ -61,11 +68,7 @@ export const redisRouter = createTRPCRouter({
return true;
} catch (error) {
throw new TRPCError({
code: "BAD_REQUEST",
message: "Error input: Inserting redis database",
cause: error,
});
throw error;
}
}),
one: protectedProcedure