Merge pull request #2635 from Infisical/feat/allow-approvers-to-bypass-secret-change-requests

feat: allow approvers to bypass secret change requests
This commit is contained in:
Daniel Hougaard
2024-10-22 22:28:52 +04:00
committed by GitHub
@@ -7,7 +7,8 @@ import {
faSquareCheck, faSquareCheck,
faSquareXmark, faSquareXmark,
faTriangleExclamation, faTriangleExclamation,
faUserLock} from "@fortawesome/free-solid-svg-icons"; faUserLock
} from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { twMerge } from "tailwind-merge"; import { twMerge } from "tailwind-merge";
@@ -38,7 +39,7 @@ export const SecretApprovalRequestAction = ({
isMergable, isMergable,
approvals, approvals,
statusChangeByEmail, statusChangeByEmail,
workspaceId, workspaceId,
enforcementLevel, enforcementLevel,
canApprove canApprove
}: Props) => { }: Props) => {
@@ -112,16 +113,19 @@ export const SecretApprovalRequestAction = ({
At least {approvals} approving review required At least {approvals} approving review required
{Boolean(statusChangeByEmail) && `. Reopened by ${statusChangeByEmail}`} {Boolean(statusChangeByEmail) && `. Reopened by ${statusChangeByEmail}`}
</span> </span>
{!canApprove && isSoftEnforcement && ( {isSoftEnforcement && !isMergable && (
<div className="mt-2 flex flex-col space-y-2"> <div className="mt-2 flex flex-col space-y-2">
<Checkbox <Checkbox
onCheckedChange={(checked) => setByPassApproval(checked === true)} onCheckedChange={(checked) => setByPassApproval(checked === true)}
isChecked={byPassApproval} isChecked={byPassApproval}
id="byPassApproval" id="byPassApproval"
checkIndicatorBg="text-white" checkIndicatorBg="text-white"
className={twMerge("mr-2", byPassApproval ? "bg-red hover:bg-red-600 border-red" : "")} className={twMerge(
"mr-2",
byPassApproval ? "border-red bg-red hover:bg-red-600" : ""
)}
> >
<span className="text-red text-xs"> <span className="text-xs text-red">
Merge without waiting for approval (bypass secret change policy) Merge without waiting for approval (bypass secret change policy)
</span> </span>
</Checkbox> </Checkbox>
@@ -159,8 +163,10 @@ export const SecretApprovalRequestAction = ({
<Button <Button
leftIcon={<FontAwesomeIcon icon={!canApprove ? faLandMineOn : faCheck} />} leftIcon={<FontAwesomeIcon icon={!canApprove ? faLandMineOn : faCheck} />}
isDisabled={ isDisabled={
(!isMergable && canApprove) !(
|| (!canApprove && isSoftEnforcement && (!byPassApproval || !isValidBypassReason(bypassReason))) (isMergable && canApprove) ||
(isSoftEnforcement && byPassApproval && isValidBypassReason(bypassReason))
)
} }
isLoading={isMerging} isLoading={isMerging}
onClick={handleSecretApprovalRequestMerge} onClick={handleSecretApprovalRequestMerge}