* wip: add page and loading of certificates in folder * wip: add certificate addition and removal * feat: add removal ui for certificates * feat: migrate integrations to fetch or agent with trusted certificates * fix: lock file issues * fix: typecheck issue * fix: inconsistent package versions * chore: address pull request feedback * fix: add missing navigation item and restrict access to page * chore: address pull request feedback * fix: inconsistent undici dependency version * fix: inconsistent undici dependency version
28 lines
1009 B
TypeScript
28 lines
1009 B
TypeScript
import { z } from "zod";
|
|
import { zfd } from "zod-form-data";
|
|
|
|
import { addCustomRootCertificateAsync, removeCustomRootCertificateAsync } from "@homarr/certificates/server";
|
|
import { superRefineCertificateFile, validation } from "@homarr/validation";
|
|
|
|
import { createTRPCRouter, permissionRequiredProcedure } from "../../trpc";
|
|
|
|
export const certificateRouter = createTRPCRouter({
|
|
addCertificate: permissionRequiredProcedure
|
|
.requiresPermission("admin")
|
|
.input(
|
|
zfd.formData({
|
|
file: zfd.file().superRefine(superRefineCertificateFile),
|
|
}),
|
|
)
|
|
.mutation(async ({ input }) => {
|
|
const content = await input.file.text();
|
|
await addCustomRootCertificateAsync(input.file.name, content);
|
|
}),
|
|
removeCertificate: permissionRequiredProcedure
|
|
.requiresPermission("admin")
|
|
.input(z.object({ fileName: validation.certificates.validFileNameSchema }))
|
|
.mutation(async ({ input }) => {
|
|
await removeCustomRootCertificateAsync(input.fileName);
|
|
}),
|
|
});
|