HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/ipsremont-demo/app/Http/ViewComposers/NavigationComposer.php
<?php

namespace App\Http\ViewComposers;

use App\Models\Permission;
use App\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\View\View;

class NavigationComposer
{

    public function compose(View $view): View
    {
        return $view->with('nav', $this->getNav());
    }

    public function getNav(): array
    {
        $userNav = [];
        foreach ($this->nav() as $nav) {
            if ($nav['permissions'] === true || can($nav['permissions'])) {
                if (request()->routeIs($nav['prefix'] . '*')) {
                    $nav['active'] = true;
                }
                $userNav[] = $nav;
            }
        }

        return $userNav;
    }

    protected function nav(): array
    {
        /** @var User $user */
        $user = Auth::user();

        $nav = [];
        $nav[] = ['name' => 'leftNav.specifications', 'icon' => 'fa-plug', 'route' => 'specifications.categories', 'prefix' => 'specifications', 'permissions' => Permission::parts];
        $nav[] = ['name' => 'leftNav.parts', 'icon' => 'fa-puzzle-piece', 'route' => 'parts.index', 'prefix' => 'parts', 'permissions' => Permission::parts];
        $nav[] = ['name' => 'leftNav.orders', 'icon' => 'fa-dolly-flatbed', 'route' => 'orders.index', 'prefix' => 'orders', 'permissions' => Permission::orders];
        $nav[] = ['name' => 'leftNav.shipment', 'icon' => 'fa-shipping-fast', 'route' => 'shipment.index', 'prefix' => 'shipment', 'permissions' => Permission::shipments_view];
        $nav[] = ['name' => 'leftNav.repairs', 'icon' => 'fa-oil-can', 'route' => 'repairs.index', 'prefix' => 'repairs', 'permissions' => Permission::repairs];
        if ($user->isManager()) {
            $nav[] = ['name' => 'leftNav.reporting', 'icon' => 'fa-file-excel', 'route' => 'reporting.manager', 'prefix' => 'reporting', 'permissions' => Permission::repairs];
        }
        $nav[] = ['name' => 'leftNav.acttc', 'icon' => 'fa-file-invoice', 'route' => 'acttc.index', 'prefix' => 'acttc', 'permissions' => Permission::act_tc_view];
        $nav[] = ['name' => 'leftNav.reconciliation', 'icon' => 'fa-ruble-sign', 'route' => 'reconciliation.index', 'prefix' => 'reconciliation', 'permissions' => Permission::reconciliation];
        $nav[] = ['name' => 'leftNav.serviceCenter', 'icon' => 'fa-tools', 'route' => 'services.index', 'prefix' => 'services', 'permissions' => Permission::services];
        $nav[] = ['name' => 'leftNav.movementThroughWarehouses', 'icon' => 'fa-people-carry', 'route' => 'movement.index', 'prefix' => 'movement', 'permissions' => Permission::movement_through_warehouses];
        $nav[] = ['name' => 'leftNav.address', 'icon' => 'fa-map-marked-alt', 'route' => 'address.index', 'prefix' => 'address', 'permissions' => Permission::address];
        $nav[] = ['name' => 'leftNav.regions', 'icon' => 'fa-globe', 'route' => 'regions.index', 'prefix' => 'regions', 'permissions' => Permission::regions];
        $nav[] = ['name' => 'leftNav.branches', 'icon' => 'fa-house-user', 'route' => 'branches', 'prefix' => 'branches', 'permissions' => Permission::branches];
        $nav[] = ['name' => 'leftNav.users', 'icon' => 'fa-user-friends', 'route' => 'users.index', 'prefix' => 'users', 'permissions' => Permission::users];
        $nav[] = ['name' => 'leftNav.constructor', 'icon' => 'flaticon-safe-shield-protection', 'route' => 'constructor.index', 'prefix' => 'constructor', 'permissions' => Permission::constructor];
        $nav[] = ['name' => 'leftNav.warehouses', 'icon' => 'fa-people-carry', 'route' => 'warehouses.index', 'prefix' => 'warehouses', 'permissions' => Permission::closed];
        $nav[] = ['name' => 'leftNav.emails', 'icon' => 'fa-mail-bulk', 'route' => 'emails.index', 'prefix' => 'emails', 'permissions' => Permission::emails];
        $nav[] = ['name' => 'leftNav.settings', 'icon' => 'fa-robot', 'route' => 'settings.index', 'prefix' => 'settings', 'permissions' => Permission::settings];
        $nav[] = ['name' => 'leftNav.categories', 'icon' => 'fa-plug', 'route' => 'categories.index', 'prefix' => 'categories', 'permissions' => Permission::categories];
        $nav[] = ['name' => 'leftNav.error_codes', 'icon' => 'fa-robot', 'route' => 'errors.index', 'prefix' => 'errors', 'permissions' => Permission::settings];
        $nav[] = ['name' => 'leftNav.html', 'icon' => 'fa-robot', 'route' => 'html.index', 'prefix' => 'html', 'permissions' => Permission::settings];
        $nav[] = ['name' => 'leftNav.notifications', 'icon' => 'fa-bell', 'route' => 'notifications.list', 'prefix' => 'notifications', 'permissions' => Permission::notifications];
        $nav[] = ['name' => 'leftNav.currencies', 'icon' => 'fa-ruble-sign', 'route' => 'currencies.index', 'prefix' => 'currencies', 'permissions' => Permission::currencies];

        foreach ($nav as &$item) {
            $item['icon'] = 'fas menu-icon ' . $item['icon'];
            $item['active'] = $item['active'] ?? false;
        }

        return $nav;
    }

}