mirror of
https://github.com/Dokploy/dokploy.git
synced 2026-10-15 05:11:26 +00:00
Merge pull request #5613 from Dokploy/fix/member-server-list
fix(server): let members list servers in server pickers
This commit is contained in:
@@ -20,7 +20,10 @@ import {
|
||||
updateServerById,
|
||||
} from "@dokploy/server";
|
||||
import { db } from "@dokploy/server/db";
|
||||
import { findMemberByUserId } from "@dokploy/server/services/permission";
|
||||
import {
|
||||
findMemberByUserId,
|
||||
hasPermission,
|
||||
} from "@dokploy/server/services/permission";
|
||||
import { hasValidLicense } from "@dokploy/server/services/proprietary/license-key";
|
||||
import { TRPCError } from "@trpc/server";
|
||||
import { observable } from "@trpc/server/observable";
|
||||
@@ -52,6 +55,22 @@ import {
|
||||
} from "@/server/db/schema";
|
||||
import { applyDockerCleanupSchedule } from "@/server/utils/docker-cleanup";
|
||||
|
||||
// Users without server.read only get what the server pickers render
|
||||
const toServerOptions = async (
|
||||
ctx: Parameters<typeof hasPermission>[0],
|
||||
servers: (typeof server.$inferSelect)[],
|
||||
) => {
|
||||
await findMemberByUserId(ctx.user.id, ctx.session.activeOrganizationId);
|
||||
if (await hasPermission(ctx, { server: ["read"] })) {
|
||||
return servers;
|
||||
}
|
||||
return servers.map(({ serverId, name, ipAddress }) => ({
|
||||
serverId,
|
||||
name,
|
||||
ipAddress,
|
||||
}));
|
||||
};
|
||||
|
||||
export const serverRouter = createTRPCRouter({
|
||||
create: withPermission("server", "create")
|
||||
.input(apiCreateServer)
|
||||
@@ -217,7 +236,7 @@ export const serverRouter = createTRPCRouter({
|
||||
|
||||
return servers.length ?? 0;
|
||||
}),
|
||||
withSSHKey: withPermission("server", "read").query(async ({ ctx }) => {
|
||||
withSSHKey: protectedProcedure.query(async ({ ctx }) => {
|
||||
const accessibleIds = await getAccessibleServerIds(ctx.session);
|
||||
|
||||
const result = await db.query.server.findMany({
|
||||
@@ -235,9 +254,12 @@ export const serverRouter = createTRPCRouter({
|
||||
eq(server.serverType, "deploy"),
|
||||
),
|
||||
});
|
||||
return result.filter((s) => accessibleIds.has(s.serverId));
|
||||
return toServerOptions(
|
||||
ctx,
|
||||
result.filter((s) => accessibleIds.has(s.serverId)),
|
||||
);
|
||||
}),
|
||||
buildServers: withPermission("server", "read").query(async ({ ctx }) => {
|
||||
buildServers: protectedProcedure.query(async ({ ctx }) => {
|
||||
const accessibleIds = await getAccessibleServerIds(ctx.session);
|
||||
|
||||
const result = await db.query.server.findMany({
|
||||
@@ -255,7 +277,10 @@ export const serverRouter = createTRPCRouter({
|
||||
eq(server.serverType, "build"),
|
||||
),
|
||||
});
|
||||
return result.filter((s) => accessibleIds.has(s.serverId));
|
||||
return toServerOptions(
|
||||
ctx,
|
||||
result.filter((s) => accessibleIds.has(s.serverId)),
|
||||
);
|
||||
}),
|
||||
setup: withPermission("server", "create")
|
||||
.input(apiFindOneServer)
|
||||
|
||||
Reference in New Issue
Block a user