'Database\\Factories\\'.class_basename($modelName).'Factory' ); if (InstallationState::isDbCreated()) { $this->addMenus(); } $this->bootBroadcast(); // In demo mode, prevent all outgoing emails and notifications if (config('app.env') === 'demo') { Mail::fake(); Notification::fake(); } } /** * Register any application services. */ public function register(): void { BouncerModels::scope(new BouncerDefaultScope); } public function addMenus() { // main menu \Menu::make('main_menu', function ($menu) { foreach (config('invoiceshelf.main_menu') as $data) { $this->generateMenu($menu, $data); } }); // admin menu (super admin mode) \Menu::make('admin_menu', function ($menu) { foreach (config('invoiceshelf.admin_menu') as $data) { $this->generateMenu($menu, $data); } }); // setting menu \Menu::make('setting_menu', function ($menu) { foreach (config('invoiceshelf.setting_menu') as $data) { $this->generateMenu($menu, $data); } }); \Menu::make('customer_portal_menu', function ($menu) { foreach (config('invoiceshelf.customer_menu') as $data) { $this->generateMenu($menu, $data); } }); } public function generateMenu($menu, $data) { $menu->add($data['title'], $data['link']) ->data('icon', $data['icon']) ->data('name', $data['name']) ->data('owner_only', $data['owner_only']) ->data('super_admin_only', $data['super_admin_only'] ?? false) ->data('ability', $data['ability']) ->data('model', $data['model']) ->data('group', $data['group']) ->data('group_label', $data['group_label'] ?? '') ->data('priority', $data['priority'] ?? 100); } public function bootBroadcast() { Broadcast::routes(['middleware' => 'api.auth']); } }