shell bypass 403
<?php namespace App\Http\Controllers\Admin; use App\Exceptions\GeneralException; use App\Http\Requests\Settings\UpdatePaymentMethods; use App\Models\PaymentMethods; use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\View\View; class PaymentMethodController extends AdminBaseController { /** * view all payment gateways * * @return Application|Factory|View * @throws AuthorizationException */ public function index(): Factory|View|Application { $this->authorize('view payment_gateways'); $breadcrumbs = [ ['link' => url(config('app.admin_path')."/dashboard"), 'name' => __('locale.menu.Dashboard')], ['link' => url(config('app.admin_path')."/dashboard"), 'name' => __('locale.menu.Settings')], ['name' => __('locale.menu.Payment Gateways')], ]; $payment_gateways = PaymentMethods::all(); return \view('admin.settings.PaymentMethods.index', compact('payment_gateways', 'breadcrumbs')); } /** * * change status * * @param PaymentMethods $gateway * * @return JsonResponse * @throws AuthorizationException * @throws GeneralException */ public function activeToggle(PaymentMethods $gateway): JsonResponse { if (config('app.stage') == 'demo') { return response()->json([ 'status' => 'error', 'message' => 'Sorry! This option is not available in demo mode', ]); } try { $this->authorize('view payment_gateways'); if ($gateway->update(['status' => ! $gateway->status])) { return response()->json([ 'status' => 'success', 'message' => __('locale.settings.status_successfully_change'), ]); } throw new GeneralException(__('locale.exceptions.something_went_wrong')); } catch (ModelNotFoundException $exception) { return response()->json([ 'status' => 'error', 'message' => $exception->getMessage(), ]); } } /** * manage payment gateway * * @param PaymentMethods $gateway * * @return Application|Factory|View * @throws AuthorizationException */ public function show(PaymentMethods $gateway): Factory|View|Application { $this->authorize('update payment_gateways'); $breadcrumbs = [ ['link' => url(config('app.admin_path')."/dashboard"), 'name' => __('locale.menu.Dashboard')], ['link' => url(config('app.admin_path')."/payment-gateways"), 'name' => __('locale.menu.Payment Gateways')], ['name' => $gateway->name], ]; return \view('admin.settings.PaymentMethods.show', compact('gateway', 'breadcrumbs')); } /** * update payment gateway information * * @param PaymentMethods $payment_gateway * @param UpdatePaymentMethods $request * * @return RedirectResponse * @throws GeneralException */ public function update(PaymentMethods $payment_gateway, UpdatePaymentMethods $request): RedirectResponse { if (config('app.stage') == 'demo') { return redirect()->route('admin.payment-gateways.show', $payment_gateway->uid)->with([ 'status' => 'error', 'message' => 'Sorry! This option is not available in demo mode', ]); } $options = $request->except('_token', '_method', 'name', 'type'); $payment_gateway->name = $request->name; $payment_gateway->options = json_encode($options); if ( ! $payment_gateway->save()) { throw new GeneralException(__('locale.exceptions.something_went_wrong')); } return redirect()->route('admin.payment-gateways.show', $payment_gateway->uid)->with([ 'status' => 'success', 'message' => __('locale.payment_gateways.gateway_was_updated'), ]); } }