mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 23:27:14 +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 { registerProjectKeyRouter } from "./project-key-router";
|
||||||
import { registerProjectMembershipRouter } from "./project-membership-router";
|
import { registerProjectMembershipRouter } from "./project-membership-router";
|
||||||
import { registerProjectRouter } from "./project-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 { registerSecretFolderRouter } from "./secret-folder-router";
|
||||||
import { registerSecretImportRouter } from "./secret-import-router";
|
import { registerSecretImportRouter } from "./secret-import-router";
|
||||||
import { registerSecretRequestsRouter } from "./secret-requests-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(registerInviteOrgRouter, { prefix: "/invite-org" });
|
||||||
await server.register(registerUserActionRouter, { prefix: "/user-action" });
|
await server.register(registerUserActionRouter, { prefix: "/user-action" });
|
||||||
await server.register(registerSecretImportRouter, { prefix: "/secret-imports" });
|
await server.register(registerSecretImportRouter, { prefix: "/secret-imports" });
|
||||||
await server.register(registerReminderRouter, { prefix: "/reminders" });
|
|
||||||
await server.register(registerSecretFolderRouter, { prefix: "/folders" });
|
await server.register(registerSecretFolderRouter, { prefix: "/folders" });
|
||||||
|
|
||||||
await server.register(
|
await server.register(
|
||||||
@@ -174,4 +173,14 @@ export const registerV1Routes = async (server: FastifyZodProvider) => {
|
|||||||
},
|
},
|
||||||
{ prefix: "/secret-syncs" }
|
{ 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" }
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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
|
||||||
|
};
|
||||||
+19
-13
@@ -6,18 +6,20 @@ import { readLimit, writeLimit } from "@app/server/config/rateLimiter";
|
|||||||
import { verifyAuth } from "@app/server/plugins/auth/verify-auth";
|
import { verifyAuth } from "@app/server/plugins/auth/verify-auth";
|
||||||
import { AuthMode } from "@app/services/auth/auth-type";
|
import { AuthMode } from "@app/services/auth/auth-type";
|
||||||
|
|
||||||
export const registerReminderRouter = async (server: FastifyZodProvider) => {
|
export const registerSecretReminderRouter = async (server: FastifyZodProvider) => {
|
||||||
server.route({
|
server.route({
|
||||||
url: "/:projectId/reminder/:secretId",
|
url: "/:secretId",
|
||||||
method: "POST",
|
method: "POST",
|
||||||
config: {
|
config: {
|
||||||
rateLimit: writeLimit
|
rateLimit: writeLimit
|
||||||
},
|
},
|
||||||
schema: {
|
schema: {
|
||||||
params: z.object({
|
params: z.object({
|
||||||
projectId: z.string().uuid(),
|
|
||||||
secretId: z.string().uuid()
|
secretId: z.string().uuid()
|
||||||
}),
|
}),
|
||||||
|
querystring: z.object({
|
||||||
|
projectId: z.string().uuid()
|
||||||
|
}),
|
||||||
body: z
|
body: z
|
||||||
.object({
|
.object({
|
||||||
message: z.string().trim().max(1024).optional(),
|
message: z.string().trim().max(1024).optional(),
|
||||||
@@ -41,7 +43,7 @@ export const registerReminderRouter = async (server: FastifyZodProvider) => {
|
|||||||
actor: req.permission.type,
|
actor: req.permission.type,
|
||||||
actorOrgId: req.permission.orgId,
|
actorOrgId: req.permission.orgId,
|
||||||
actorAuthMethod: req.permission.authMethod,
|
actorAuthMethod: req.permission.authMethod,
|
||||||
projectId: req.params.projectId,
|
projectId: req.query.projectId,
|
||||||
reminder: {
|
reminder: {
|
||||||
secretId: req.params.secretId,
|
secretId: req.params.secretId,
|
||||||
message: req.body.message,
|
message: req.body.message,
|
||||||
@@ -54,7 +56,7 @@ export const registerReminderRouter = async (server: FastifyZodProvider) => {
|
|||||||
await server.services.auditLog.createAuditLog({
|
await server.services.auditLog.createAuditLog({
|
||||||
...req.auditLogInfo,
|
...req.auditLogInfo,
|
||||||
orgId: req.permission.orgId,
|
orgId: req.permission.orgId,
|
||||||
projectId: req.params.projectId,
|
projectId: req.query.projectId,
|
||||||
event: {
|
event: {
|
||||||
type: EventType.CREATE_SECRET_REMINDER,
|
type: EventType.CREATE_SECRET_REMINDER,
|
||||||
metadata: {
|
metadata: {
|
||||||
@@ -72,16 +74,18 @@ export const registerReminderRouter = async (server: FastifyZodProvider) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
server.route({
|
server.route({
|
||||||
url: "/:projectId/reminder/:secretId",
|
url: "/:secretId",
|
||||||
method: "GET",
|
method: "GET",
|
||||||
config: {
|
config: {
|
||||||
rateLimit: readLimit
|
rateLimit: readLimit
|
||||||
},
|
},
|
||||||
schema: {
|
schema: {
|
||||||
params: z.object({
|
params: z.object({
|
||||||
projectId: z.string().uuid(),
|
|
||||||
secretId: z.string().uuid()
|
secretId: z.string().uuid()
|
||||||
}),
|
}),
|
||||||
|
querystring: z.object({
|
||||||
|
projectId: z.string().uuid()
|
||||||
|
}),
|
||||||
response: {
|
response: {
|
||||||
200: z.object({
|
200: z.object({
|
||||||
reminder: RemindersSchema.extend({
|
reminder: RemindersSchema.extend({
|
||||||
@@ -100,13 +104,13 @@ export const registerReminderRouter = async (server: FastifyZodProvider) => {
|
|||||||
actorOrgId: req.permission.orgId,
|
actorOrgId: req.permission.orgId,
|
||||||
actorAuthMethod: req.permission.authMethod,
|
actorAuthMethod: req.permission.authMethod,
|
||||||
secretId: req.params.secretId,
|
secretId: req.params.secretId,
|
||||||
projectId: req.params.projectId
|
projectId: req.query.projectId
|
||||||
});
|
});
|
||||||
|
|
||||||
await server.services.auditLog.createAuditLog({
|
await server.services.auditLog.createAuditLog({
|
||||||
...req.auditLogInfo,
|
...req.auditLogInfo,
|
||||||
orgId: req.permission.orgId,
|
orgId: req.permission.orgId,
|
||||||
projectId: req.params.projectId,
|
projectId: req.query.projectId,
|
||||||
event: {
|
event: {
|
||||||
type: EventType.GET_SECRET_REMINDER,
|
type: EventType.GET_SECRET_REMINDER,
|
||||||
metadata: {
|
metadata: {
|
||||||
@@ -119,16 +123,18 @@ export const registerReminderRouter = async (server: FastifyZodProvider) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
server.route({
|
server.route({
|
||||||
url: "/:projectId/reminder/:secretId",
|
url: "/:secretId",
|
||||||
method: "DELETE",
|
method: "DELETE",
|
||||||
config: {
|
config: {
|
||||||
rateLimit: writeLimit
|
rateLimit: writeLimit
|
||||||
},
|
},
|
||||||
schema: {
|
schema: {
|
||||||
params: z.object({
|
params: z.object({
|
||||||
projectId: z.string().uuid(),
|
|
||||||
secretId: z.string().uuid()
|
secretId: z.string().uuid()
|
||||||
}),
|
}),
|
||||||
|
querystring: z.object({
|
||||||
|
projectId: z.string().uuid()
|
||||||
|
}),
|
||||||
response: {
|
response: {
|
||||||
200: z.object({
|
200: z.object({
|
||||||
message: z.string()
|
message: z.string()
|
||||||
@@ -143,13 +149,13 @@ export const registerReminderRouter = async (server: FastifyZodProvider) => {
|
|||||||
actorOrgId: req.permission.orgId,
|
actorOrgId: req.permission.orgId,
|
||||||
actorAuthMethod: req.permission.authMethod,
|
actorAuthMethod: req.permission.authMethod,
|
||||||
secretId: req.params.secretId,
|
secretId: req.params.secretId,
|
||||||
projectId: req.params.projectId
|
projectId: req.query.projectId
|
||||||
});
|
});
|
||||||
|
|
||||||
await server.services.auditLog.createAuditLog({
|
await server.services.auditLog.createAuditLog({
|
||||||
...req.auditLogInfo,
|
...req.auditLogInfo,
|
||||||
orgId: req.permission.orgId,
|
orgId: req.permission.orgId,
|
||||||
projectId: req.params.projectId,
|
projectId: req.query.projectId,
|
||||||
event: {
|
event: {
|
||||||
type: EventType.DELETE_SECRET_REMINDER,
|
type: EventType.DELETE_SECRET_REMINDER,
|
||||||
metadata: {
|
metadata: {
|
||||||
@@ -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>({
|
return useMutation<Reminder, object, CreateReminderDTO>({
|
||||||
mutationFn: async ({ message, repeatDays, nextReminderDate, recipients }) => {
|
mutationFn: async ({ message, repeatDays, nextReminderDate, recipients }) => {
|
||||||
const { data } = await apiRequest.post<{ reminder: Reminder }>(
|
const { data } = await apiRequest.post<{ reminder: Reminder }>(
|
||||||
`/api/v1/reminders/${projectId}/reminder/${secretId}`,
|
`/api/v1/reminders/secrets/${secretId}?projectId=${projectId}`,
|
||||||
{
|
{
|
||||||
message,
|
message,
|
||||||
repeatDays,
|
repeatDays,
|
||||||
@@ -37,7 +37,7 @@ export const useDeleteReminder = (secretId: string, projectId: string) => {
|
|||||||
return useMutation<Reminder, object, DeleteReminderDTO>({
|
return useMutation<Reminder, object, DeleteReminderDTO>({
|
||||||
mutationFn: async () => {
|
mutationFn: async () => {
|
||||||
const { data } = await apiRequest.delete<{ reminder: Reminder }>(
|
const { data } = await apiRequest.delete<{ reminder: Reminder }>(
|
||||||
`/api/v1/reminders/${projectId}/reminder/${secretId}`
|
`/api/v1/reminders/secrets/${secretId}?projectId=${projectId}`
|
||||||
);
|
);
|
||||||
return data.reminder;
|
return data.reminder;
|
||||||
},
|
},
|
||||||
@@ -52,7 +52,7 @@ export const useGetReminder = (secretId: string, projectId: string) => {
|
|||||||
queryKey: reminderKeys.getReminder(secretId, projectId),
|
queryKey: reminderKeys.getReminder(secretId, projectId),
|
||||||
queryFn: async () => {
|
queryFn: async () => {
|
||||||
const { data } = await apiRequest.get<{ reminder: Reminder }>(
|
const { data } = await apiRequest.get<{ reminder: Reminder }>(
|
||||||
`/api/v1/reminders/${projectId}/reminder/${secretId}`
|
`/api/v1/reminders/secrets/${secretId}?projectId=${projectId}`
|
||||||
);
|
);
|
||||||
return data.reminder;
|
return data.reminder;
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user