mirror of
https://github.com/fosrl/pangolin.git
synced 2026-06-05 15:26:35 +00:00
Restrict the number of sites in the api
This commit is contained in:
@@ -173,6 +173,25 @@ const createSiteResourceSchema = z
|
||||
{
|
||||
message: "At least one of siteIds or siteId must be provided"
|
||||
}
|
||||
)
|
||||
.refine(
|
||||
(data) => {
|
||||
if (data.mode !== "ssh") return true;
|
||||
const isSingleSiteMode =
|
||||
data.authDaemonMode === "native" ||
|
||||
(data.pamMode === "push" && data.authDaemonMode === "site") ||
|
||||
(data.pamMode === "push" && data.authDaemonMode === undefined);
|
||||
if (!isSingleSiteMode) return true;
|
||||
const effectiveSiteIds = [
|
||||
...(data.siteIds ?? []),
|
||||
...(data.siteId !== undefined ? [data.siteId] : [])
|
||||
];
|
||||
const uniqueSiteIds = new Set(effectiveSiteIds);
|
||||
return uniqueSiteIds.size <= 1;
|
||||
},
|
||||
{
|
||||
message: "Only one site is allowed for this SSH daemon mode"
|
||||
}
|
||||
);
|
||||
|
||||
export type CreateSiteResourceBody = z.infer<typeof createSiteResourceSchema>;
|
||||
|
||||
@@ -181,6 +181,25 @@ const updateSiteResourceSchema = z
|
||||
{
|
||||
message: "At least one of siteIds or siteId must be provided"
|
||||
}
|
||||
)
|
||||
.refine(
|
||||
(data) => {
|
||||
if (data.mode !== "ssh") return true;
|
||||
const isSingleSiteMode =
|
||||
data.authDaemonMode === "native" ||
|
||||
(data.pamMode === "push" && data.authDaemonMode === "site") ||
|
||||
(data.pamMode === "push" && data.authDaemonMode === undefined);
|
||||
if (!isSingleSiteMode) return true;
|
||||
const effectiveSiteIds = [
|
||||
...(data.siteIds ?? []),
|
||||
...(data.siteId !== undefined ? [data.siteId] : [])
|
||||
];
|
||||
const uniqueSiteIds = new Set(effectiveSiteIds);
|
||||
return uniqueSiteIds.size <= 1;
|
||||
},
|
||||
{
|
||||
message: "Only one site is allowed for this SSH daemon mode"
|
||||
}
|
||||
);
|
||||
|
||||
export type UpdateSiteResourceBody = z.infer<typeof updateSiteResourceSchema>;
|
||||
|
||||
Reference in New Issue
Block a user