mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
Improve reminders router
This commit is contained in:
@@ -42,7 +42,7 @@ import { registerProjectEnvRouter } from "./project-env-router";
|
||||
import { registerProjectKeyRouter } from "./project-key-router";
|
||||
import { registerProjectMembershipRouter } from "./project-membership-router";
|
||||
import { registerProjectRouter } from "./project-router";
|
||||
import { registerReminderRouter } from "./reminder-router";
|
||||
import { SECRET_REMINDER_REGISTER_ROUTER_MAP } from "./reminder-routers";
|
||||
import { registerSecretFolderRouter } from "./secret-folder-router";
|
||||
import { registerSecretImportRouter } from "./secret-import-router";
|
||||
import { registerSecretRequestsRouter } from "./secret-requests-router";
|
||||
@@ -85,7 +85,6 @@ export const registerV1Routes = async (server: FastifyZodProvider) => {
|
||||
await server.register(registerInviteOrgRouter, { prefix: "/invite-org" });
|
||||
await server.register(registerUserActionRouter, { prefix: "/user-action" });
|
||||
await server.register(registerSecretImportRouter, { prefix: "/secret-imports" });
|
||||
await server.register(registerReminderRouter, { prefix: "/reminders" });
|
||||
await server.register(registerSecretFolderRouter, { prefix: "/folders" });
|
||||
|
||||
await server.register(
|
||||
@@ -174,4 +173,14 @@ export const registerV1Routes = async (server: FastifyZodProvider) => {
|
||||
},
|
||||
{ prefix: "/secret-syncs" }
|
||||
);
|
||||
|
||||
await server.register(
|
||||
async (reminderRouter) => {
|
||||
// register service specific reminder endpoints (reminders/secret)
|
||||
for await (const [reminderType, router] of Object.entries(SECRET_REMINDER_REGISTER_ROUTER_MAP)) {
|
||||
await reminderRouter.register(router, { prefix: `/${reminderType}` });
|
||||
}
|
||||
},
|
||||
{ prefix: "/reminders" }
|
||||
);
|
||||
};
|
||||
|
||||
8
backend/src/server/routes/v1/reminder-routers/index.ts
Normal file
8
backend/src/server/routes/v1/reminder-routers/index.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { ReminderType } from "@app/services/reminder/reminder-enums";
|
||||
|
||||
import { registerSecretReminderRouter } from "./secret-reminder-router";
|
||||
|
||||
export const SECRET_REMINDER_REGISTER_ROUTER_MAP: Record<ReminderType, (server: FastifyZodProvider) => Promise<void>> =
|
||||
{
|
||||
[ReminderType.SECRETS]: registerSecretReminderRouter
|
||||
};
|
||||
@@ -6,18 +6,20 @@ import { readLimit, writeLimit } from "@app/server/config/rateLimiter";
|
||||
import { verifyAuth } from "@app/server/plugins/auth/verify-auth";
|
||||
import { AuthMode } from "@app/services/auth/auth-type";
|
||||
|
||||
export const registerReminderRouter = async (server: FastifyZodProvider) => {
|
||||
export const registerSecretReminderRouter = async (server: FastifyZodProvider) => {
|
||||
server.route({
|
||||
url: "/:projectId/reminder/:secretId",
|
||||
url: "/:secretId",
|
||||
method: "POST",
|
||||
config: {
|
||||
rateLimit: writeLimit
|
||||
},
|
||||
schema: {
|
||||
params: z.object({
|
||||
projectId: z.string().uuid(),
|
||||
secretId: z.string().uuid()
|
||||
}),
|
||||
querystring: z.object({
|
||||
projectId: z.string().uuid()
|
||||
}),
|
||||
body: z
|
||||
.object({
|
||||
message: z.string().trim().max(1024).optional(),
|
||||
@@ -41,7 +43,7 @@ export const registerReminderRouter = async (server: FastifyZodProvider) => {
|
||||
actor: req.permission.type,
|
||||
actorOrgId: req.permission.orgId,
|
||||
actorAuthMethod: req.permission.authMethod,
|
||||
projectId: req.params.projectId,
|
||||
projectId: req.query.projectId,
|
||||
reminder: {
|
||||
secretId: req.params.secretId,
|
||||
message: req.body.message,
|
||||
@@ -54,7 +56,7 @@ export const registerReminderRouter = async (server: FastifyZodProvider) => {
|
||||
await server.services.auditLog.createAuditLog({
|
||||
...req.auditLogInfo,
|
||||
orgId: req.permission.orgId,
|
||||
projectId: req.params.projectId,
|
||||
projectId: req.query.projectId,
|
||||
event: {
|
||||
type: EventType.CREATE_SECRET_REMINDER,
|
||||
metadata: {
|
||||
@@ -72,16 +74,18 @@ export const registerReminderRouter = async (server: FastifyZodProvider) => {
|
||||
});
|
||||
|
||||
server.route({
|
||||
url: "/:projectId/reminder/:secretId",
|
||||
url: "/:secretId",
|
||||
method: "GET",
|
||||
config: {
|
||||
rateLimit: readLimit
|
||||
},
|
||||
schema: {
|
||||
params: z.object({
|
||||
projectId: z.string().uuid(),
|
||||
secretId: z.string().uuid()
|
||||
}),
|
||||
querystring: z.object({
|
||||
projectId: z.string().uuid()
|
||||
}),
|
||||
response: {
|
||||
200: z.object({
|
||||
reminder: RemindersSchema.extend({
|
||||
@@ -100,13 +104,13 @@ export const registerReminderRouter = async (server: FastifyZodProvider) => {
|
||||
actorOrgId: req.permission.orgId,
|
||||
actorAuthMethod: req.permission.authMethod,
|
||||
secretId: req.params.secretId,
|
||||
projectId: req.params.projectId
|
||||
projectId: req.query.projectId
|
||||
});
|
||||
|
||||
await server.services.auditLog.createAuditLog({
|
||||
...req.auditLogInfo,
|
||||
orgId: req.permission.orgId,
|
||||
projectId: req.params.projectId,
|
||||
projectId: req.query.projectId,
|
||||
event: {
|
||||
type: EventType.GET_SECRET_REMINDER,
|
||||
metadata: {
|
||||
@@ -119,16 +123,18 @@ export const registerReminderRouter = async (server: FastifyZodProvider) => {
|
||||
});
|
||||
|
||||
server.route({
|
||||
url: "/:projectId/reminder/:secretId",
|
||||
url: "/:secretId",
|
||||
method: "DELETE",
|
||||
config: {
|
||||
rateLimit: writeLimit
|
||||
},
|
||||
schema: {
|
||||
params: z.object({
|
||||
projectId: z.string().uuid(),
|
||||
secretId: z.string().uuid()
|
||||
}),
|
||||
querystring: z.object({
|
||||
projectId: z.string().uuid()
|
||||
}),
|
||||
response: {
|
||||
200: z.object({
|
||||
message: z.string()
|
||||
@@ -143,13 +149,13 @@ export const registerReminderRouter = async (server: FastifyZodProvider) => {
|
||||
actorOrgId: req.permission.orgId,
|
||||
actorAuthMethod: req.permission.authMethod,
|
||||
secretId: req.params.secretId,
|
||||
projectId: req.params.projectId
|
||||
projectId: req.query.projectId
|
||||
});
|
||||
|
||||
await server.services.auditLog.createAuditLog({
|
||||
...req.auditLogInfo,
|
||||
orgId: req.permission.orgId,
|
||||
projectId: req.params.projectId,
|
||||
projectId: req.query.projectId,
|
||||
event: {
|
||||
type: EventType.DELETE_SECRET_REMINDER,
|
||||
metadata: {
|
||||
3
backend/src/services/reminder/reminder-enums.ts
Normal file
3
backend/src/services/reminder/reminder-enums.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export enum ReminderType {
|
||||
SECRETS = "secrets"
|
||||
}
|
||||
@@ -15,7 +15,7 @@ export const useCreateReminder = (secretId: string, projectId: string) => {
|
||||
return useMutation<Reminder, object, CreateReminderDTO>({
|
||||
mutationFn: async ({ message, repeatDays, nextReminderDate, recipients }) => {
|
||||
const { data } = await apiRequest.post<{ reminder: Reminder }>(
|
||||
`/api/v1/reminders/${projectId}/reminder/${secretId}`,
|
||||
`/api/v1/reminders/secrets/${secretId}?projectId=${projectId}`,
|
||||
{
|
||||
message,
|
||||
repeatDays,
|
||||
@@ -37,7 +37,7 @@ export const useDeleteReminder = (secretId: string, projectId: string) => {
|
||||
return useMutation<Reminder, object, DeleteReminderDTO>({
|
||||
mutationFn: async () => {
|
||||
const { data } = await apiRequest.delete<{ reminder: Reminder }>(
|
||||
`/api/v1/reminders/${projectId}/reminder/${secretId}`
|
||||
`/api/v1/reminders/secrets/${secretId}?projectId=${projectId}`
|
||||
);
|
||||
return data.reminder;
|
||||
},
|
||||
@@ -52,7 +52,7 @@ export const useGetReminder = (secretId: string, projectId: string) => {
|
||||
queryKey: reminderKeys.getReminder(secretId, projectId),
|
||||
queryFn: async () => {
|
||||
const { data } = await apiRequest.get<{ reminder: Reminder }>(
|
||||
`/api/v1/reminders/${projectId}/reminder/${secretId}`
|
||||
`/api/v1/reminders/secrets/${secretId}?projectId=${projectId}`
|
||||
);
|
||||
return data.reminder;
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user