*/ public function share(Request $request): array { if (!$this->isInstalled()) { return []; } $locale = $request->user()->lang ?? $this->getSuperAdminLang(); app()->setLocale($locale); // language file $languageFile = resource_path('lang/language.json'); $availableLanguages = []; if (file_exists($languageFile)) { $languages = json_decode(file_get_contents($languageFile), true) ?? []; $availableLanguages = array_values($languages); } return [ ...parent::share($request), 'auth' => [ 'user' => $request->user() ? array_merge( $request->user()->toArray(), [ 'permissions' => $this->getUserPermissions($request->user()), 'roles' => $this->getUserRoles($request->user()), 'activatedPackages' => array_unique(array_merge(ActivatedModule(), ['Warehouse'])), ] ) : ['activatedPackages' => array_unique(array_merge(ActivatedModule(), ['Warehouse']))], 'impersonating' => $request->session()->has('impersonator_id'), 'lang' => $locale, ], 'flash' => [ 'success' => $request->session()->get('success'), 'error' => $request->session()->get('error'), ], 'packages' => (new Module())->allModules(), 'adminAllSetting' => $request->user() ? getAdminAllSetting() : getAdminAllSetting(true), 'companyAllSetting' => $request->user() ? getCompanyAllSetting($request->user()->id) : [], 'imageUrlPrefix' => getImageUrlPrefix(), 'currencies' => config('default_currency.currencies', []), 'availableLanguages' => $availableLanguages, ]; } public function onException($request, $exception) { if ($exception instanceof AuthorizationException) { return redirect()->route('users.index')->with('error', 'Permission denied'); } return parent::onException($request, $exception); } /** * Get user permissions (placeholder - implement based on your permission system) */ private function getUserPermissions($user): array { if (method_exists($user, 'getAllPermissions')) { return $user->getAllPermissions()->pluck('name')->toArray(); } return []; } private function getUserRoles($user): array { if (method_exists($user, 'getRoleNames')) { return $user->getRoleNames()->toArray(); } return []; } /** * Get superadmin language if user lang is not set */ private function getSuperAdminLang(): string { return admin_setting('defaultLanguage') ? admin_setting('defaultLanguage') : 'en'; } private function isInstalled(): bool { return File::exists(storage_path('installed')); } }