mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 22:27:48 +00:00
cancel requests endpoint
This commit is contained in:
@@ -338,4 +338,31 @@ export const registerApprovalPolicyEndpoints = <P extends TApprovalPolicy>({
|
|||||||
return { request };
|
return { request };
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
server.route({
|
||||||
|
method: "POST",
|
||||||
|
url: "/requests/:requestId/cancel",
|
||||||
|
config: {
|
||||||
|
rateLimit: writeLimit
|
||||||
|
},
|
||||||
|
schema: {
|
||||||
|
description: "Cancel approval request",
|
||||||
|
params: z.object({
|
||||||
|
requestId: z.string().uuid()
|
||||||
|
}),
|
||||||
|
response: {
|
||||||
|
200: z.object({
|
||||||
|
request: requestResponseSchema
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onRequest: verifyAuth([AuthMode.JWT]),
|
||||||
|
handler: async (req) => {
|
||||||
|
const { request } = await server.services.approvalPolicy.cancelRequest(req.params.requestId, req.permission);
|
||||||
|
|
||||||
|
// TODO(andrey): Audit log
|
||||||
|
|
||||||
|
return { request };
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -673,6 +673,29 @@ export const approvalPolicyServiceFactory = ({
|
|||||||
return { requests };
|
return { requests };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const cancelRequest = async (requestId: string, actor: OrgServiceActor) => {
|
||||||
|
const request = await approvalRequestDAL.findById(requestId);
|
||||||
|
if (!request) {
|
||||||
|
throw new ForbiddenRequestError({ message: "Request not found" });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (request.status !== ApprovalRequestStatus.Pending) {
|
||||||
|
throw new BadRequestError({ message: "Request is not pending" });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (request.requesterId !== actor.id) {
|
||||||
|
throw new ForbiddenRequestError({ message: "You are not the requester of this request" });
|
||||||
|
}
|
||||||
|
|
||||||
|
const updatedRequest = await approvalRequestDAL.updateById(requestId, {
|
||||||
|
status: ApprovalRequestStatus.Cancelled
|
||||||
|
});
|
||||||
|
|
||||||
|
const steps = await approvalRequestDAL.findStepsByRequestId(requestId);
|
||||||
|
|
||||||
|
return { request: { ...updatedRequest, steps } };
|
||||||
|
};
|
||||||
|
|
||||||
return {
|
return {
|
||||||
create,
|
create,
|
||||||
list,
|
list,
|
||||||
@@ -683,6 +706,7 @@ export const approvalPolicyServiceFactory = ({
|
|||||||
listRequests,
|
listRequests,
|
||||||
getRequestById,
|
getRequestById,
|
||||||
approveRequest,
|
approveRequest,
|
||||||
rejectRequest
|
rejectRequest,
|
||||||
|
cancelRequest
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user