update imports/service token crud

This commit is contained in:
Maidul Islam
2024-01-04 00:55:03 -05:00
parent 0f6490b1e7
commit 51e5c25e16
2 changed files with 27 additions and 6 deletions
@@ -116,6 +116,12 @@ export const createSecretImp = async (req: Request, res: Response) => {
ProjectPermissionActions.Create, ProjectPermissionActions.Create,
subject(ProjectPermissionSub.Secrets, { environment, secretPath: directory }) subject(ProjectPermissionSub.Secrets, { environment, secretPath: directory })
); );
ForbiddenError.from(permission).throwUnlessCan(
ProjectPermissionActions.Create,
subject(ProjectPermissionSub.Secrets, { environment: secretImport.environment, secretPath: secretImport.secretPath })
);
} }
const folders = await Folder.findOne({ const folders = await Folder.findOne({
@@ -331,6 +337,13 @@ export const updateSecretImport = async (req: Request, res: Response) => {
secretPath secretPath
}) })
); );
secretImports.forEach(({ environment, secretPath }) => {
ForbiddenError.from(permission).throwUnlessCan(
ProjectPermissionActions.Create,
subject(ProjectPermissionSub.Secrets, { environment, secretPath })
);
})
} }
const orderBefore = importSecDoc.imports; const orderBefore = importSecDoc.imports;
@@ -13,7 +13,7 @@ import {
ProjectPermissionSub, ProjectPermissionSub,
getAuthDataProjectPermissions getAuthDataProjectPermissions
} from "../../ee/services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError, subject } from "@casl/ability";
import { Types } from "mongoose"; import { Types } from "mongoose";
/** /**
@@ -86,6 +86,14 @@ export const createServiceTokenData = async (req: Request, res: Response) => {
ProjectPermissionSub.ServiceTokens ProjectPermissionSub.ServiceTokens
); );
scopes.forEach(({ environment, secretPath }) => {
ForbiddenError.from(permission).throwUnlessCan(
ProjectPermissionActions.Create,
subject(ProjectPermissionSub.Secrets, { environment, secretPath: secretPath })
);
})
const secret = crypto.randomBytes(16).toString("hex"); const secret = crypto.randomBytes(16).toString("hex");
const secretHash = await bcrypt.hash(secret, await getSaltRounds()); const secretHash = await bcrypt.hash(secret, await getSaltRounds());