API and rule screen working

This commit is contained in:
Owen 2025-02-08 17:38:30 -05:00
parent 8f96d0795c
commit 4a6da91faf
No known key found for this signature in database
GPG key ID: 8271FDFFD9E0CCBD
6 changed files with 490 additions and 9 deletions

View file

@ -11,13 +11,21 @@ import { fromError } from "zod-validation-error";
const createResourceRuleSchema = z
.object({
resourceId: z.number().int().positive(),
action: z.enum(["ACCEPT", "DROP"]),
match: z.enum(["CIDR", "PATH"]),
value: z.string().min(1)
})
.strict();
const createResourceRuleParamsSchema = z
.object({
resourceId: z
.string()
.transform(Number)
.pipe(z.number().int().positive())
})
.strict();
export async function createResourceRule(
req: Request,
res: Response,
@ -34,7 +42,21 @@ export async function createResourceRule(
);
}
const { resourceId, action, match, value } = parsedBody.data;
const { action, match, value } = parsedBody.data;
const parsedParams = createResourceRuleParamsSchema.safeParse(
req.params
);
if (!parsedParams.success) {
return next(
createHttpError(
HttpCode.BAD_REQUEST,
fromError(parsedParams.error).toString()
)
);
}
const { resourceId } = parsedParams.data;
// Verify that the referenced resource exists
const [resource] = await db
@ -76,4 +98,4 @@ export async function createResourceRule(
createHttpError(HttpCode.INTERNAL_SERVER_ERROR, "An error occurred")
);
}
}
}