>(
(prev, curr) => ({ ...prev, [curr.user.id]: curr }),
@@ -350,7 +356,11 @@ export const AccessApprovalRequest = ({
details.isReviewedByUser ||
details.isRejectedByAnyone ||
(!details.isApprover &&
- !(details.isSoftEnforcement && details.isRequestedByCurrentUser))
+ !(
+ details.isSoftEnforcement &&
+ details.isRequestedByCurrentUser &&
+ canBypassApprovalPermission
+ ))
)
return;
@@ -360,9 +370,11 @@ export const AccessApprovalRequest = ({
) {
setSelectedRequest({
...request,
- user: details.isRequestedByCurrentUser
- ? user
- : membersGroupById?.[request.requestedByUserId].user!,
+ user:
+ details.isRequestedByCurrentUser ||
+ !membersGroupById?.[request.requestedByUserId].user
+ ? user
+ : membersGroupById?.[request.requestedByUserId].user,
isRequestedByCurrentUser: details.isRequestedByCurrentUser,
isApprover: details.isApprover
});
@@ -376,7 +388,11 @@ export const AccessApprovalRequest = ({
details.isReviewedByUser ||
details.isRejectedByAnyone ||
(!details.isApprover &&
- !(details.isSoftEnforcement && details.isRequestedByCurrentUser))
+ !(
+ details.isSoftEnforcement &&
+ details.isRequestedByCurrentUser &&
+ canBypassApprovalPermission
+ ))
)
return;
@@ -387,9 +403,11 @@ export const AccessApprovalRequest = ({
) {
setSelectedRequest({
...request,
- user: details.isRequestedByCurrentUser
- ? user
- : membersGroupById?.[request.requestedByUserId].user!,
+ user:
+ details.isRequestedByCurrentUser ||
+ !membersGroupById?.[request.requestedByUserId].user
+ ? user
+ : membersGroupById?.[request.requestedByUserId].user,
isRequestedByCurrentUser: details.isRequestedByCurrentUser,
isApprover: details.isApprover
});
@@ -463,6 +481,7 @@ export const AccessApprovalRequest = ({
setSelectedRequest(null);
refetchRequests();
}}
+ canBypassApprovalPermission={canBypassApprovalPermission}
/>
)}
diff --git a/frontend/src/pages/secret-manager/SecretApprovalsPage/components/AccessApprovalRequest/components/ReviewAccessModal.tsx b/frontend/src/pages/secret-manager/SecretApprovalsPage/components/AccessApprovalRequest/components/ReviewAccessModal.tsx
index d739d8bb6..5aaa0ea56 100644
--- a/frontend/src/pages/secret-manager/SecretApprovalsPage/components/AccessApprovalRequest/components/ReviewAccessModal.tsx
+++ b/frontend/src/pages/secret-manager/SecretApprovalsPage/components/AccessApprovalRequest/components/ReviewAccessModal.tsx
@@ -1,5 +1,8 @@
import { useCallback, useMemo, useState } from "react";
+import { faTriangleExclamation } from "@fortawesome/free-solid-svg-icons";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import ms from "ms";
+import { twMerge } from "tailwind-merge";
import { createNotification } from "@app/components/notifications";
import { Button, Checkbox, FormControl, Input, Modal, ModalContent } from "@app/components/v2";
@@ -8,9 +11,6 @@ import { ProjectPermissionActions } from "@app/context";
import { useReviewAccessRequest } from "@app/hooks/api";
import { TAccessApprovalRequest } from "@app/hooks/api/accessApproval/types";
import { EnforcementLevel } from "@app/hooks/api/policies/enums";
-import { twMerge } from "tailwind-merge";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { faTriangleExclamation } from "@fortawesome/free-solid-svg-icons";
export const ReviewAccessRequestModal = ({
isOpen,
@@ -18,7 +18,8 @@ export const ReviewAccessRequestModal = ({
request,
projectSlug,
selectedRequester,
- selectedEnvSlug
+ selectedEnvSlug,
+ canBypassApprovalPermission
}: {
isOpen: boolean;
onOpenChange: (isOpen: boolean) => void;
@@ -30,6 +31,7 @@ export const ReviewAccessRequestModal = ({
projectSlug: string;
selectedRequester: string | undefined;
selectedEnvSlug: string | undefined;
+ canBypassApprovalPermission: boolean;
}) => {
const [isLoading, setIsLoading] = useState<"approved" | "rejected" | null>(null);
const [bypassApproval, setBypassApproval] = useState(false);
@@ -182,7 +184,11 @@ export const ReviewAccessRequestModal = ({
- {isSoftEnforcement && request.isRequestedByCurrentUser && !request.isApprover && (
-
- setBypassApproval(checked === true)}
- isChecked={bypassApproval}
- id="byPassApproval"
- checkIndicatorBg="text-white"
- className={twMerge(
- "mr-2",
- bypassApproval ? "border-red bg-red hover:bg-red-600" : ""
- )}
- >
-
- Approve without waiting for requirements to be met (bypass policy protection)
-
-
- {bypassApproval && (
-
+ setBypassApproval(checked === true)}
+ isChecked={bypassApproval}
+ id="byPassApproval"
+ checkIndicatorBg="text-white"
+ className={twMerge(
+ "mr-2",
+ bypassApproval ? "border-red bg-red hover:bg-red-600" : ""
+ )}
>
- setBypassReason(e.currentTarget.value)}
- placeholder="Enter reason for bypass (min 10 chars)"
- leftIcon={}
- />
-
- )}
-
- )}
+
+ Approve without waiting for requirements to be met (bypass policy protection)
+
+
+ {bypassApproval && (
+
+ setBypassReason(e.currentTarget.value)}
+ placeholder="Enter reason for bypass (min 10 chars)"
+ leftIcon={}
+ />
+
+ )}
+
+ )}