@@ -143,35 +143,35 @@ public function handle(Request $request, Closure $next)
143143
144144 Menu::make ('sidebar_processes ' , function ($ menu ) {
145145 $ submenu = $ menu ->add (__ ('Designer ' ));
146- if (\Auth:: check () && \Auth:: user ()-> can ('view-processes ' )) {
146+ if ($ this -> userHasPermission ('view-processes ' )) {
147147 $ submenu ->add (__ ('Processes ' ), [
148148 'route ' => 'processes.index ' ,
149149 'icon ' => 'fa-play-circle ' ,
150150 'id ' => 'processes ' ,
151151 ])->data ('order ' , 0 );
152152 }
153- if (\Auth:: check () && \Auth:: user ()-> can ('view-scripts ' )) {
153+ if ($ this -> userHasPermission ('view-scripts ' )) {
154154 $ submenu ->add (__ ('Scripts ' ), [
155155 'route ' => 'scripts.index ' ,
156156 'icon ' => 'fa-code ' ,
157157 'id ' => 'process-scripts ' ,
158158 ])->data ('order ' , 2 );
159159 }
160- if (\Auth:: check () && \Auth:: user ()-> can ('view-screens ' )) {
160+ if ($ this -> userHasPermission ('view-screens ' )) {
161161 $ submenu ->add (__ ('Screens ' ), [
162162 'route ' => 'screens.index ' ,
163163 'icon ' => 'fa-file-alt ' ,
164164 'id ' => 'process-screens ' ,
165165 ])->data ('order ' , 3 );
166166 }
167- if (\Auth:: check () && \Auth:: user ()-> can ('view-environment_variables ' )) {
167+ if ($ this -> userHasPermission ('view-environment_variables ' )) {
168168 $ submenu ->add (__ ('Environment Variables ' ), [
169169 'route ' => 'environment-variables.index ' ,
170170 'icon ' => 'fa-lock ' ,
171171 'id ' => 'process-environment ' ,
172172 ])->data ('order ' , 4 );
173173 }
174- if (\Auth:: check () && \Auth:: user ()-> can ('edit-processes ' )) {
174+ if ($ this -> userHasPermission ('edit-processes ' )) {
175175 $ submenu ->add (__ ('Signals ' ), [
176176 'route ' => 'signals.index ' ,
177177 'customicon ' => 'nav-icon fas bpmn-icon-end-event-signal ' ,
@@ -262,4 +262,25 @@ public function handle(Request $request, Closure $next)
262262
263263 return $ next ($ request );
264264 }
265+
266+ private function userHasPermission ($ permission )
267+ {
268+ $ user = \Auth::user ();
269+
270+ if (!$ user ) {
271+ return false ;
272+ }
273+
274+ if ($ user ->is_administrator ) {
275+ return true ;
276+ }
277+
278+ // Fetch the user's permissions and check if the user has the specific permission
279+ $ userPermissions = $ user ->permissions ->pluck ('group ' )->unique ()->toArray ();
280+ if ($ user ->can ($ permission ) && count ($ userPermissions ) === 1 && $ userPermissions [0 ] === 'Projects ' ) {
281+ return false ; // Deny UI access if the user has only the 'Projects' permission
282+ }
283+
284+ return $ user ->can ($ permission );
285+ }
265286}
0 commit comments