Skip to content

Commit 848f352

Browse files
authored
Enhance risk acceptance authorization by checking global permissions when no engagements are found (#14174)
1 parent 34e8078 commit 848f352

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

dojo/views.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
from dojo.authorization.authorization import (
1717
user_has_configuration_permission_or_403,
18+
user_has_global_permission,
1819
user_has_permission,
1920
user_has_permission_or_403,
2021
)
@@ -115,10 +116,17 @@ def action_history(request, cid, oid):
115116
elif ct.model == "risk_acceptance":
116117
engagements = Engagement.objects.filter(risk_acceptance=obj)
117118
authorized = False
118-
for engagement in engagements:
119-
if user_has_permission(request.user, engagement, Permissions.Engagement_View):
120-
authorized = True
121-
break
119+
fetched_engagements = list(engagements)
120+
# Check the case that there are no engagements associated with the risk acceptance
121+
if len(fetched_engagements) == 0:
122+
# Determine if the user has risk acceptance view permission globally
123+
authorized = user_has_global_permission(request.user, Permissions.Risk_Acceptance)
124+
else:
125+
# Iterate through engagements to see if the user has view permission on any of them
126+
for engagement in fetched_engagements:
127+
if user_has_permission(request.user, engagement, Permissions.Engagement_View):
128+
authorized = True
129+
break
122130
if not authorized:
123131
raise PermissionDenied
124132
elif ct.model == "user":

0 commit comments

Comments
 (0)