shell bypass 403
<?php
namespace App\Http\Controllers\addons;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Helpers\helper;
use App\Models\User;
use App\Models\Order;
use App\Models\Transaction;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\Hash;
class UserController extends Controller
{
public function index()
{
$getusers = User::where('type', '=', '2')->where('is_deleted', 2)->orderBydesc('id')->get();
return view('admin.users.users', compact('getusers'));
}
public function userdetails(Request $request)
{
$getusers = User::where('id', $request->id)->first();
$getorders = Order::with('user_info', 'driver_info')->select('order.*', 'users.name')->leftJoin('users', 'order.driver_id', '=', 'users.id')->where('order.user_id', $request->id)->get();
$getdriver = User::where('type', '3')->where('is_available', 1)->orderByDesc('id')->get();
$gettransactions = Transaction::select('id', 'user_id', 'order_id', 'order_number', 'amount', 'transaction_id', 'transaction_type', 'username', 'created_at')->where('user_id', $request->id)->orderByDesc('id')->get();
return view('admin.users.user-details', compact('getusers', 'getorders', 'getdriver', 'gettransactions'));
}
public function status(Request $request)
{
$users = User::where('id', $request->id)->update(array('is_available' => $request->status));
if ($users) {
return 1;
} else {
return 0;
}
}
public function add_deduct(Request $request)
{
$validator = Validator::make($request->all(), [
'id' => 'required',
'type' => 'required',
'money' => 'required|numeric',
], [
"id.required" => trans('messages.wrong'),
"type.required" => trans('messages.wrong'),
"money.required" => trans('messages.amount_required'),
"money.numeric" => trans('messages.numbers_only')
]);
if ($validator->fails()) {
return response()->json(['success' => 0, 'errors' => $validator->getMessageBag()->toArray()], 200);
} else {
$checkuser = User::find($request->id);
$title = "";
$body = "";
if ($request->type == 'add') {
$checkuser->wallet = $checkuser->wallet + $request->money;
$checkuser->save();
$Wallet = new Transaction;
$Wallet->user_id = $request->id;
$Wallet->amount = $request->money;
$Wallet->transaction_type = 102;
$Wallet->save();
$title = trans('labels.wallet_recharge');
$body = "Amount " . helper::currency_format($request->money) . " has been credited to your wallet by Admin.";
}
if ($request->type == 'deduct') {
if ($checkuser->wallet < $request->money) {
return response()->json(['success' => 0, 'errors' => array("amount" => trans('messages.amount_less_then') . ' : ' . helper::currency_format($checkuser->wallet))], 200);
} else {
$checkuser->wallet = $checkuser->wallet - $request->money;
$checkuser->save();
$Wallet = new Transaction;
$Wallet->user_id = $request->id;
$Wallet->amount = $request->money;
$Wallet->transaction_type = 103;
$Wallet->save();
}
$title = trans('labels.wallet_deduction');
$body = "Amount " . helper::currency_format($request->money) . " has been debited from your wallet by Admin.";
}
$noti = helper::push_notification($checkuser->token, $title, $body, "wallet", "");
return response()->json(['success' => 1, 'message' => trans('messages.success'), 'wallet' => helper::currency_format($checkuser->wallet)], 200);
}
}
public function add()
{
return view('admin.users.add');
}
public function save_customer(Request $request)
{
try {
$validatoremail = Validator::make(['email' => $request->email], [
'email' => [
'required',
'email',
Rule::unique('users')->where('is_deleted', 2)->where('type', 2),
]
]);
if ($validatoremail->fails()) {
return redirect()->back()->with('error', trans('messages.unique_email'));
}
$validatormobile = Validator::make(['mobile' => $request->mobile], [
'mobile' => [
'required',
'numeric',
Rule::unique('users')->where('is_deleted', 2)->where('type', 2),
]
]);
if ($validatormobile->fails()) {
return redirect()->back()->with('error', trans('messages.unique_mobile'));
}
$newuser = new User();
$newuser->name = $request->name;
$newuser->email = $request->email;
$newuser->password = hash::make($request->password);
$newuser->mobile = $request->mobile;
$newuser->type = "2";
$newuser->login_type = "email";
$newuser->is_available = "1";
$newuser->is_verified = "1";
$newuser->referral_code = substr(str_shuffle('ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz'), 0, 10);
$newuser->save();
return redirect('admin/users')->with('success', trans('messages.success'));
} catch (\Throwable $th) {
return redirect('admin/users')->with('error', trans('messages.wrong'));
}
}
public function edit($id)
{
$getuserdata = User::where('id', $id)->first();
return view('admin.users.edit', compact('getuserdata'));
}
public function update(Request $request)
{
$edituser = User::where('id', $request->id)->first();
$validatoremail = Validator::make(['email' => $request->email], [
'email' => [
'required',
'email',
Rule::unique('users')->where('is_deleted', 2)->where('type', 2)->ignore($edituser->id),
]
]);
if ($validatoremail->fails()) {
return redirect()->back()->with('error', trans('messages.unique_email'));
}
$validatormobile = Validator::make(['mobile' => $request->mobile], [
'mobile' => [
'required',
'numeric',
Rule::unique('users')->where('is_deleted', 2)->where('type', 2)->ignore($edituser->id),
]
]);
if ($validatormobile->fails()) {
return redirect()->back()->with('error', trans('messages.unique_mobile'));
}
$edituser->name = $request->name;
$edituser->email = $request->email;
$edituser->mobile = $request->mobile;
$edituser->update();
return redirect('admin/users')->with('success', trans('messages.success'));
}
public function deletecustomer(Request $request)
{
$user = User::where('id', $request->id)->first();
$user->is_deleted = 1;
$user->update();
$emaildata = helper::emailconfigration();
Config::set('mail', $emaildata);
helper::send_mail_delete_account($user);
return redirect('admin/users')->with('success', trans('messages.success'));
}
}