shell bypass 403
<?php namespace App\Http\Controllers\Admin; use App\Http\Requests\Settings\ThemeCustomizerRequest; use App\Models\AppConfig; use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; use Illuminate\Http\RedirectResponse; use Illuminate\View\View; class ThemeCustomizerController extends AdminBaseController { /** * * @return Application|Factory|\Illuminate\Contracts\View\View|View * @throws AuthorizationException */ public function index(): \Illuminate\Contracts\View\View|Factory|View|Application { $this->authorize('general settings'); $breadcrumbs = [ ['link' => url(config('app.admin_path')."/dashboard"), 'name' => __('locale.menu.Dashboard')], ['link' => url(config('app.admin_path')."/dashboard"), 'name' => __('locale.menu.Theme Customizer')], ['name' => __('locale.menu.Theme Customizer')], ]; return view('admin.ThemeCustomizer.index', compact('breadcrumbs')); } /** * @param ThemeCustomizerRequest $request * * @return RedirectResponse */ public function postCustomizer(ThemeCustomizerRequest $request): RedirectResponse { if (config('app.stage') == 'demo') { return redirect()->route('admin.theme.customizer')->with([ 'status' => 'error', 'message' => 'Sorry! This option is not available in demo mode', ]); } $input = $request->all(); if (isset($request->sidebarCollapsed)) { $sidebarCollapsed = "true"; } else { $sidebarCollapsed = "false"; } if (isset($request->pageHeader)) { $pageHeader = "true"; } else { $pageHeader = "false"; } if ($request->navbarColor == 'custom') { $navbarColor = $request->navbarCustomColor; } else { $navbarColor = $request->navbarColor; } AppConfig::setEnv('THEME_NAVBAR_COLOR', $navbarColor); $customizer_settings = ' THEME_LAYOUT_TYPE='.$input['mainLayoutType'].' THEME_SKIN='.$input['theme'].' THEME_NAVBAR_TYPE='.$input['navbarType'].' THEME_FOOTER_TYPE='.$input['footerType'].' THEME_LAYOUT_WIDTH='.$input['layoutWidth'].' THEME_MENU_COLLAPSED='.$sidebarCollapsed.' THEME_BREADCRUMBS='.$pageHeader.' '; // @ignoreCodingStandard $env = file_get_contents(base_path('.env')); $rows = explode("\n", $env); $unwanted = "THEME_LAYOUT_TYPE|THEME_SKIN|THEME_NAVBAR_TYPE|THEME_FOOTER_TYPE|THEME_LAYOUT_WIDTH|THEME_MENU_COLLAPSED|THEME_BREADCRUMBS"; $cleanArray = preg_grep("/$unwanted/i", $rows, PREG_GREP_INVERT); $cleanString = implode("\n", $cleanArray); $env = $cleanString.$customizer_settings; file_put_contents(base_path('.env'), $env); return redirect()->route('admin.theme.customizer')->with([ 'status' => 'success', 'message' => 'Theme customizer was successfully saved', ]); } }