feat(infisical-pg): added secret version api, fixed pass reset flow, smtp connection issue fixed

This commit is contained in:
Akhil Mohan
2024-01-27 12:38:23 +05:30
parent 31c0bf6831
commit 5373cb6afb
18 changed files with 244 additions and 39 deletions
+2
View File
@@ -8,6 +8,7 @@ import { registerSecretApprovalRequestRouter } from "./secret-approval-request-r
import { registerSecretRotationProviderRouter } from "./secret-rotation-provider-router";
import { registerSecretRotationRouter } from "./secret-rotation-router";
import { registerSecretScanningRouter } from "./secret-scanning-router";
import { registerSecretVersionRouter } from "./secret-version-router";
import { registerSnapshotRouter } from "./snapshot-router";
import { registerTrustedIpRouter } from "./trusted-ip-router";
@@ -34,4 +35,5 @@ export const registerV1EERoutes = async (server: FastifyZodProvider) => {
await server.register(registerSamlRouter, { prefix: "/sso" });
await server.register(registerSecretScanningRouter, { prefix: "/secret-scanning" });
await server.register(registerSecretRotationRouter, { prefix: "/secret-rotations" });
await server.register(registerSecretVersionRouter, { prefix: "/secret" });
};
@@ -0,0 +1,37 @@
import { z } from "zod";
import { SecretVersionsSchema } from "@app/db/schemas";
import { verifyAuth } from "@app/server/plugins/auth/verify-auth";
import { AuthMode } from "@app/services/auth/auth-type";
export const registerSecretVersionRouter = async (server: FastifyZodProvider) => {
server.route({
url: "/:secretId/secret-versions",
method: "GET",
schema: {
params: z.object({
secretId: z.string()
}),
querystring: z.object({
offset: z.coerce.number(),
limit: z.coerce.number()
}),
response: {
200: z.object({
secretVersions: SecretVersionsSchema.omit({ secretBlindIndex: true }).array()
})
}
},
onRequest: verifyAuth([AuthMode.JWT]),
handler: async (req) => {
const secretVersions = await server.services.secret.getSecretVersions({
actor: req.permission.type,
actorId: req.permission.id,
limit: req.query.limit,
offset: req.query.offset,
secretId: req.params.secretId
});
return { secretVersions };
}
});
};
@@ -6,12 +6,12 @@ import { logger } from "@app/lib/logger";
import { QueueJobs, QueueName, TQueueServiceFactory } from "@app/queue";
import { TOrgDalFactory } from "@app/services/org/org-dal";
import { SmtpTemplates, TSmtpService } from "@app/services/smtp/smtp-service";
import { TUserDalFactory } from "@app/services/user/user-dal";
import { TSecretScanningDalFactory } from "../secret-scanning-dal";
import {
scanContentAndGetFindings,
scanFullRepoContentAndGetFindings} from "./secret-scanning-fns";
scanFullRepoContentAndGetFindings
} from "./secret-scanning-fns";
import {
SecretMatch,
TScanFullRepoEventPayload,
@@ -23,7 +23,6 @@ type TSecretScanningQueueFactoryDep = {
secretScanningDal: TSecretScanningDalFactory;
smtpService: Pick<TSmtpService, "sendMail">;
orgMembershipDal: Pick<TOrgDalFactory, "findMembership">;
userDal: Pick<TUserDalFactory, "find">;
};
export type TSecretScanningQueueFactory = ReturnType<typeof secretScanningQueueFactory>;
@@ -33,7 +32,6 @@ export const secretScanningQueueFactory = ({
secretScanningDal,
smtpService,
orgMembershipDal: orgMemberDal,
userDal
}: TSecretScanningQueueFactoryDep) => {
const startFullRepoScan = async (payload: TScanFullRepoEventPayload) => {
await queueService.queue(QueueName.SecretFullRepoScan, QueueJobs.SecretScan, payload, {
@@ -69,12 +67,7 @@ export const secretScanningQueueFactory = ({
orgId: organizationId,
role: OrgMembershipRole.Admin
});
const userEmails = await userDal.find({
$in: {
id: adminsOfWork.map(({ userId }) => userId).filter(Boolean) as string[]
}
});
return userEmails.map((userObject) => userObject.email);
return adminsOfWork.map((userObject) => userObject.email);
};
queueService.start(QueueName.SecretPushEventScan, async (job) => {