Transfer cert endpoints to work with serial numbers

This commit is contained in:
Tuan Dang
2024-05-29 16:12:46 -07:00
parent f9847f48b0
commit a2a786f392
23 changed files with 346 additions and 139 deletions
@@ -8,7 +8,7 @@ import { AuthMode } from "@app/services/auth/auth-type";
export const registerCertRouter = async (server: FastifyZodProvider) => {
server.route({
method: "GET",
url: "/:certId",
url: "/:serialNumber",
config: {
rateLimit: readLimit
},
@@ -16,7 +16,7 @@ export const registerCertRouter = async (server: FastifyZodProvider) => {
schema: {
description: "Get certificate",
params: z.object({
certId: z.string().trim()
serialNumber: z.string().trim()
}),
response: {
200: z.object({
@@ -25,8 +25,8 @@ export const registerCertRouter = async (server: FastifyZodProvider) => {
}
},
handler: async (req) => {
const certificate = await server.services.certificate.getCertById({
certId: req.params.certId,
const certificate = await server.services.certificate.getCert({
serialNumber: req.params.serialNumber,
actor: req.permission.type,
actorId: req.permission.id,
actorAuthMethod: req.permission.authMethod,
@@ -38,9 +38,45 @@ export const registerCertRouter = async (server: FastifyZodProvider) => {
}
});
server.route({
method: "POST",
url: "/:serialNumber/revoke",
config: {
rateLimit: writeLimit
},
onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]),
schema: {
description: "Revoke",
params: z.object({
serialNumber: z.string().trim()
}),
response: {
200: z.object({
message: z.string().trim(),
serialNumber: z.string().trim(),
revokedAt: z.date()
})
}
},
handler: async (req) => {
await server.services.certificate.revokeCert({
serialNumber: req.params.serialNumber,
actor: req.permission.type,
actorId: req.permission.id,
actorAuthMethod: req.permission.authMethod,
actorOrgId: req.permission.orgId
});
return {
message: "Successfully revoked certificate",
serialNumber: req.params.serialNumber,
revokedAt: new Date()
};
}
});
server.route({
method: "DELETE",
url: "/:certId",
url: "/:serialNumber",
config: {
rateLimit: writeLimit
},
@@ -48,7 +84,7 @@ export const registerCertRouter = async (server: FastifyZodProvider) => {
schema: {
description: "Delete certificate",
params: z.object({
certId: z.string().trim()
serialNumber: z.string().trim()
}),
response: {
200: z.object({
@@ -57,8 +93,8 @@ export const registerCertRouter = async (server: FastifyZodProvider) => {
}
},
handler: async (req) => {
const certificate = await server.services.certificate.deleteCertById({
certId: req.params.certId,
const certificate = await server.services.certificate.deleteCert({
serialNumber: req.params.serialNumber,
actor: req.permission.type,
actorId: req.permission.id,
actorAuthMethod: req.permission.authMethod,
@@ -72,7 +108,7 @@ export const registerCertRouter = async (server: FastifyZodProvider) => {
server.route({
method: "GET",
url: "/:certId/certificate",
url: "/:serialNumber/certificate",
config: {
rateLimit: readLimit
},
@@ -80,7 +116,7 @@ export const registerCertRouter = async (server: FastifyZodProvider) => {
schema: {
description: "Get certificate of certificate",
params: z.object({
certId: z.string().trim()
serialNumber: z.string().trim()
}),
response: {
200: z.object({
@@ -92,7 +128,7 @@ export const registerCertRouter = async (server: FastifyZodProvider) => {
},
handler: async (req) => {
const { certificate, certificateChain, serialNumber } = await server.services.certificate.getCertCert({
certId: req.params.certId,
serialNumber: req.params.serialNumber,
actor: req.permission.type,
actorId: req.permission.id,
actorAuthMethod: req.permission.authMethod,
+7 -2
View File
@@ -60,8 +60,13 @@ export const registerV1Routes = async (server: FastifyZodProvider) => {
{ prefix: "/workspace" }
);
await server.register(registerCaRouter, { prefix: "/ca" });
await server.register(registerCertRouter, { prefix: "/certificates" });
await server.register(
async (pkiRouter) => {
await pkiRouter.register(registerCaRouter, { prefix: "/ca" });
await pkiRouter.register(registerCertRouter, { prefix: "/certificates" });
},
{ prefix: "/pki" }
);
await server.register(registerProjectBotRouter, { prefix: "/bot" });
await server.register(registerIntegrationRouter, { prefix: "/integration" });