mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 16:27:40 +00:00
add typescript types to secret versions
This commit is contained in:
@@ -22,7 +22,7 @@ import { userHasNoAbility, userHasWorkspaceAccess, userHasWriteOnlyAbility } fro
|
|||||||
import Tag from '../../models/tag';
|
import Tag from '../../models/tag';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import {
|
import {
|
||||||
BatchSecretRequest,
|
BatchSecretRequest,
|
||||||
BatchSecret
|
BatchSecret
|
||||||
} from '../../types/secret';
|
} from '../../types/secret';
|
||||||
|
|
||||||
@@ -41,13 +41,13 @@ export const batchSecrets = async (req: Request, res: Response) => {
|
|||||||
workspaceId: string;
|
workspaceId: string;
|
||||||
environment: string;
|
environment: string;
|
||||||
requests: BatchSecretRequest[];
|
requests: BatchSecretRequest[];
|
||||||
}= req.body;
|
} = req.body;
|
||||||
|
|
||||||
const createSecrets: BatchSecret[] = [];
|
const createSecrets: BatchSecret[] = [];
|
||||||
const updateSecrets: BatchSecret[] = [];
|
const updateSecrets: BatchSecret[] = [];
|
||||||
const deleteSecrets: Types.ObjectId[] = [];
|
const deleteSecrets: Types.ObjectId[] = [];
|
||||||
const actions: IAction[] = [];
|
const actions: IAction[] = [];
|
||||||
|
|
||||||
requests.forEach((request) => {
|
requests.forEach((request) => {
|
||||||
switch (request.method) {
|
switch (request.method) {
|
||||||
case 'POST':
|
case 'POST':
|
||||||
@@ -70,7 +70,7 @@ export const batchSecrets = async (req: Request, res: Response) => {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// handle create secrets
|
// handle create secrets
|
||||||
let createdSecrets: ISecret[] = [];
|
let createdSecrets: ISecret[] = [];
|
||||||
if (createSecrets.length > 0) {
|
if (createSecrets.length > 0) {
|
||||||
@@ -109,18 +109,18 @@ export const batchSecrets = async (req: Request, res: Response) => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle update secrets
|
// handle update secrets
|
||||||
let updatedSecrets: ISecret[] = [];
|
let updatedSecrets: ISecret[] = [];
|
||||||
if (updateSecrets.length > 0 && req.secrets) {
|
if (updateSecrets.length > 0 && req.secrets) {
|
||||||
// construct object containing all secrets
|
// construct object containing all secrets
|
||||||
let listedSecretsObj: {
|
let listedSecretsObj: {
|
||||||
[key: string]: {
|
[key: string]: {
|
||||||
version: number;
|
version: number;
|
||||||
type: string;
|
type: string;
|
||||||
}
|
}
|
||||||
} = {};
|
} = {};
|
||||||
|
|
||||||
listedSecretsObj = req.secrets.reduce((obj: any, secret: ISecret) => ({
|
listedSecretsObj = req.secrets.reduce((obj: any, secret: ISecret) => ({
|
||||||
...obj,
|
...obj,
|
||||||
[secret._id.toString()]: secret
|
[secret._id.toString()]: secret
|
||||||
@@ -140,7 +140,7 @@ export const batchSecrets = async (req: Request, res: Response) => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
await Secret.bulkWrite(updateOperations);
|
await Secret.bulkWrite(updateOperations);
|
||||||
|
|
||||||
const secretVersions = updateSecrets.map((u) => ({
|
const secretVersions = updateSecrets.map((u) => ({
|
||||||
secret: new Types.ObjectId(u._id),
|
secret: new Types.ObjectId(u._id),
|
||||||
version: listedSecretsObj[u._id.toString()].version,
|
version: listedSecretsObj[u._id.toString()].version,
|
||||||
@@ -227,7 +227,7 @@ export const batchSecrets = async (req: Request, res: Response) => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (actions.length > 0) {
|
if (actions.length > 0) {
|
||||||
// (EE) create (audit) log
|
// (EE) create (audit) log
|
||||||
await EELogService.createLog({
|
await EELogService.createLog({
|
||||||
@@ -250,7 +250,7 @@ export const batchSecrets = async (req: Request, res: Response) => {
|
|||||||
await EESecretService.takeSecretSnapshot({
|
await EESecretService.takeSecretSnapshot({
|
||||||
workspaceId
|
workspaceId
|
||||||
});
|
});
|
||||||
|
|
||||||
const resObj: { [key: string]: ISecret[] | string[] } = {}
|
const resObj: { [key: string]: ISecret[] | string[] } = {}
|
||||||
|
|
||||||
if (createSecrets.length > 0) {
|
if (createSecrets.length > 0) {
|
||||||
@@ -260,11 +260,11 @@ export const batchSecrets = async (req: Request, res: Response) => {
|
|||||||
if (updateSecrets.length > 0) {
|
if (updateSecrets.length > 0) {
|
||||||
resObj['updatedSecrets'] = updatedSecrets;
|
resObj['updatedSecrets'] = updatedSecrets;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (deleteSecrets.length > 0) {
|
if (deleteSecrets.length > 0) {
|
||||||
resObj['deletedSecrets'] = deleteSecrets.map((d) => d.toString());
|
resObj['deletedSecrets'] = deleteSecrets.map((d) => d.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
return res.status(200).send(resObj);
|
return res.status(200).send(resObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -358,9 +358,25 @@ export const createSecrets = async (req: Request, res: Response) => {
|
|||||||
tags: string[]
|
tags: string[]
|
||||||
}
|
}
|
||||||
|
|
||||||
const newlyCreatedSecrets = await Secret.insertMany(
|
const secretsToInsert: ISecret[] = listOfSecretsToCreate.map(({
|
||||||
listOfSecretsToCreate.map(({
|
type,
|
||||||
|
secretKeyCiphertext,
|
||||||
|
secretKeyIV,
|
||||||
|
secretKeyTag,
|
||||||
|
secretValueCiphertext,
|
||||||
|
secretValueIV,
|
||||||
|
secretValueTag,
|
||||||
|
secretCommentCiphertext,
|
||||||
|
secretCommentIV,
|
||||||
|
secretCommentTag,
|
||||||
|
tags
|
||||||
|
}: secretsToCreateType) => {
|
||||||
|
return ({
|
||||||
|
version: 1,
|
||||||
|
workspace: new Types.ObjectId(workspaceId),
|
||||||
type,
|
type,
|
||||||
|
user: type === SECRET_PERSONAL ? req.user : undefined,
|
||||||
|
environment,
|
||||||
secretKeyCiphertext,
|
secretKeyCiphertext,
|
||||||
secretKeyIV,
|
secretKeyIV,
|
||||||
secretKeyTag,
|
secretKeyTag,
|
||||||
@@ -371,26 +387,10 @@ export const createSecrets = async (req: Request, res: Response) => {
|
|||||||
secretCommentIV,
|
secretCommentIV,
|
||||||
secretCommentTag,
|
secretCommentTag,
|
||||||
tags
|
tags
|
||||||
}: secretsToCreateType) => {
|
});
|
||||||
return ({
|
})
|
||||||
version: 1,
|
|
||||||
workspace: new Types.ObjectId(workspaceId),
|
const newlyCreatedSecrets: ISecret[] = (await Secret.insertMany(secretsToInsert)).map((insertedSecret) => insertedSecret.toObject());
|
||||||
type,
|
|
||||||
user: type === SECRET_PERSONAL ? req.user : undefined,
|
|
||||||
environment,
|
|
||||||
secretKeyCiphertext,
|
|
||||||
secretKeyIV,
|
|
||||||
secretKeyTag,
|
|
||||||
secretValueCiphertext,
|
|
||||||
secretValueIV,
|
|
||||||
secretValueTag,
|
|
||||||
secretCommentCiphertext,
|
|
||||||
secretCommentIV,
|
|
||||||
secretCommentTag,
|
|
||||||
tags
|
|
||||||
});
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
// trigger event - push secrets
|
// trigger event - push secrets
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ const v1PushSecrets = async ({
|
|||||||
|
|
||||||
if (toAdd.length > 0) {
|
if (toAdd.length > 0) {
|
||||||
// add secrets
|
// add secrets
|
||||||
const newSecrets = await Secret.insertMany(
|
const newSecrets: ISecret[] = (await Secret.insertMany(
|
||||||
toAdd.map((s, idx) => {
|
toAdd.map((s, idx) => {
|
||||||
const obj: any = {
|
const obj: any = {
|
||||||
version: 1,
|
version: 1,
|
||||||
@@ -294,7 +294,7 @@ const v1PushSecrets = async ({
|
|||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
})
|
})
|
||||||
);
|
)).map((insertedSecret) => insertedSecret.toObject());
|
||||||
|
|
||||||
// (EE) add secret versions for new secrets
|
// (EE) add secret versions for new secrets
|
||||||
EESecretService.addSecretVersions({
|
EESecretService.addSecretVersions({
|
||||||
|
|||||||
Reference in New Issue
Block a user