mirror of
https://github.com/andwati/dokploy.git
synced 2026-10-22 04:54:29 +00:00
55 lines
1.9 KiB
TypeScript
55 lines
1.9 KiB
TypeScript
import {
|
|
getAllBackupsForOrganization,
|
|
getAllDomainsForOrganization,
|
|
getAllServicesForOrganization,
|
|
} from "@dokploy/server";
|
|
import {
|
|
findMemberByUserId,
|
|
hasPermission,
|
|
} from "@dokploy/server/services/permission";
|
|
import { TRPCError } from "@trpc/server";
|
|
import { createTRPCRouter, protectedProcedure, withPermission } from "../trpc";
|
|
|
|
export const overviewRouter = createTRPCRouter({
|
|
services: withPermission("service", "read").query(async ({ ctx }) => {
|
|
const orgId = ctx.session.activeOrganizationId;
|
|
const accessedServices =
|
|
ctx.user.role !== "owner" && ctx.user.role !== "admin"
|
|
? (await findMemberByUserId(ctx.user.id, orgId)).accessedServices
|
|
: null;
|
|
return getAllServicesForOrganization(orgId, accessedServices);
|
|
}),
|
|
|
|
// Reads backup and/or volumeBackup run history depending on which the user can see.
|
|
backups: protectedProcedure.query(async ({ ctx }) => {
|
|
const [canReadBackups, canReadVolumeBackups] = await Promise.all([
|
|
hasPermission(ctx, { backup: ["read"] }),
|
|
hasPermission(ctx, { volumeBackup: ["read"] }),
|
|
]);
|
|
if (!canReadBackups && !canReadVolumeBackups) {
|
|
throw new TRPCError({
|
|
code: "UNAUTHORIZED",
|
|
message: "You don't have access to backups or volume backups",
|
|
});
|
|
}
|
|
const orgId = ctx.session.activeOrganizationId;
|
|
const accessedServices =
|
|
ctx.user.role !== "owner" && ctx.user.role !== "admin"
|
|
? (await findMemberByUserId(ctx.user.id, orgId)).accessedServices
|
|
: null;
|
|
return getAllBackupsForOrganization(orgId, accessedServices, {
|
|
backup: canReadBackups,
|
|
volumeBackup: canReadVolumeBackups,
|
|
});
|
|
}),
|
|
|
|
domains: withPermission("domain", "read").query(async ({ ctx }) => {
|
|
const orgId = ctx.session.activeOrganizationId;
|
|
const accessedServices =
|
|
ctx.user.role !== "owner" && ctx.user.role !== "admin"
|
|
? (await findMemberByUserId(ctx.user.id, orgId)).accessedServices
|
|
: null;
|
|
return getAllDomainsForOrganization(orgId, accessedServices);
|
|
}),
|
|
});
|