@@ -26,11 +26,7 @@ class ActionController extends Controller
2626 public function index (Request $ request )
2727 {
2828 // Admin, user, auditor or auditee
29- abort_if (
30- ! ((Auth::User ()->role === 1 ) ||
31- (Auth::User ()->role === 2 ) ||
32- (Auth::User ()->role === 3 ) ||
33- (Auth::User ()->role === 5 )),
29+ abort_if (Auth::User ()->isAPI (),
3430 Response::HTTP_FORBIDDEN ,
3531 '403 Forbidden '
3632 );
@@ -90,11 +86,33 @@ public function index(Request $request)
9086 $ actions = $ actions ->where ('actions.scope ' , $ scope );
9187 }
9288
93- // filter on auditee controls
94- if (Auth::User ()->role === 5 ) {
95- $ actions = $ actions
96- ->leftjoin ('action_user ' , 'controls.id ' , '= ' , 'control_user.control_id ' )
97- ->where ('action_user.user_id ' , '= ' , Auth::User ()->id );
89+ // filter on auditee actions
90+ if (Auth::User ()->isAuditee ()) {
91+ $ userId = Auth::id ();
92+ $ actions = $ actions ->where (function ($ query ) use ($ userId ) {
93+ // Actions assignées directement à l'utilisateur
94+ $ query ->whereExists (function ($ q ) use ($ userId ) {
95+ $ q ->select (DB ::raw (1 ))
96+ ->from ('action_user ' )
97+ ->whereColumn ('action_user.action_id ' , 'actions.id ' )
98+ ->where ('action_user.user_id ' , $ userId );
99+ })
100+ // OU actions liées à des contrôles assignés à l'utilisateur
101+ ->orWhereExists (function ($ q ) use ($ userId ) {
102+ $ q ->select (DB ::raw (1 ))
103+ ->from ('control_user ' )
104+ ->whereColumn ('control_user.control_id ' , 'actions.control_id ' )
105+ ->where ('control_user.user_id ' , $ userId );
106+ })
107+ // OU actions liées à des contrôles assignés via un groupe
108+ ->orWhereExists (function ($ q ) use ($ userId ) {
109+ $ q ->select (DB ::raw (1 ))
110+ ->from ('control_user_group ' )
111+ ->join ('user_user_group ' , 'user_user_group.user_group_id ' , '= ' , 'control_user_group.user_group_id ' )
112+ ->whereColumn ('control_user_group.control_id ' , 'actions.control_id ' )
113+ ->where ('user_user_group.user_id ' , $ userId );
114+ });
115+ });
98116 }
99117
100118 // Query DB
@@ -128,7 +146,6 @@ public function index(Request $request)
128146 ->with ('scopes ' , $ scopes )
129147 ->with ('actions ' , $ actions );
130148 }
131-
132149 /**
133150 * Save an action plan
134151 *
0 commit comments