shell bypass 403
<?php
namespace App\Http\Controllers\addons;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\RoleManager;
use App\Models\RoleAccess;
use Illuminate\Support\Facades\Validator;
use App\Models\User;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\Hash;
class RolesController extends Controller
{
public function index(Request $request)
{
$getroles = RoleManager::where('is_deleted', 2)->orderbyDesc('id')->get();
return view('admin.roles.index', compact('getroles'));
}
public function add()
{
return view('admin.roles.add');
}
public function save(Request $request)
{
try {
$role = Rolemanager::where('role', $request->name)->where('is_deleted', 2)->first();
if (!empty($role) || $role != null) {
return redirect('admin/roles/add')->with('error', trans('messages.already_exist_role'));
}
$newrole = new RoleManager;
$newrole->role = $request->name;
$newrole->module = implode('|', $request->modules);
$newrole->is_available = 1;
$newrole->is_deleted = 2;
$newrole->save();
$add = $request->add;
$edit = $request->edit;
$delete = $request->delete;
foreach ($request->modules as $module) {
$roleaccess = new RoleAccess();
$roleaccess->module_name = $module;
$roleaccess->role_id = $newrole->id;
$roleaccess->add = $add != null ? (array_key_exists($module, $add) ? 1 : 0) : 0;
$roleaccess->edit = $edit != null ? (array_key_exists($module, $edit) ? 1 : 0) : 0;
$roleaccess->delete = $delete != null ? (array_key_exists($module, $delete) ? 1 : 0) : 0;
$roleaccess->manage = 1;
$roleaccess->save();
}
return redirect('admin/roles')->with('success', trans('messages.success'));
} catch (\Throwable $th) {
return redirect('admin/roles')->with('error', trans('messages.wrong'));
}
}
public function edit(Request $request)
{
$data = RoleManager::where('id', $request->id)->first();
return view('admin.roles.edit', compact('data'));
}
public function update(Request $request)
{
$role = Rolemanager::where('id', '!=', $request->id)->where('role', $request->name)->where('is_deleted', 2)->first();
if (!empty($role) || $role != null) {
return redirect('admin/roles/edit-' . $request->id)->with('error', trans('messages.already_exist_role'));
}
$role = RoleManager::where('id', $request->id)->first();
$role->role = $request->name;
$role->module = implode('|', $request->modules);
$role->update();
$add = $request->add;
$edit = $request->edit;
$delete = $request->delete;
$roleaccess = RoleAccess::where('role_id', $request->id)->get();
foreach ($roleaccess as $access) {
$access->delete();
}
foreach ($request->modules as $module) {
$roleaccess = new RoleAccess();
$roleaccess->role_id = $request->id;
$roleaccess->module_name = $module;
$roleaccess->add = $add != null ? (array_key_exists($module, $add) ? 1 : 0) : 0;
$roleaccess->edit = $edit != null ? (array_key_exists($module, $edit) ? 1 : 0) : 0;
$roleaccess->delete = $delete != null ? (array_key_exists($module, $delete) ? 1 : 0) : 0;
$roleaccess->manage = 1;
$roleaccess->save();
}
return redirect('admin/roles')->with('success', trans('messages.success'));
}
public function status(Request $request)
{
$rolemanager = RoleManager::where('id', $request->id)->first();
$rolemanager->is_available = $request->status;
$rolemanager->update();
return 1;
}
public function delete(Request $request)
{
$deleterole = RoleManager::where('id', $request->id)->first();
$deleterole->is_deleted = 1;
$deleterole->update();
return 1;
}
public function employee_index(Request $request)
{
$getemployee = User::where('type', 4)->orderbyDesc('id')->get();
return view('admin.employee.index', compact('getemployee'));
}
public function employee_edit(Request $request)
{
$editemployee = User::where('id', $request->id)->first();
$roles = RoleManager::where('is_available', 1)->where('is_deleted', 2)->get();
return view('admin.employee.update', compact('editemployee', 'roles'));
}
public function employee_add(Request $request)
{
$roles = RoleManager::where('is_available', 1)->where('is_deleted', 2)->get();
return view('admin.employee.add', compact('roles'));
}
public function employee_save(Request $request)
{
$validatoremail = Validator::make(['email' => $request->email], [
'email' => [
'required',
'email',
Rule::unique('users')->whereIn('type', [1, 4])->where('is_deleted', 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')->whereIn('type', [1, 4])->where('is_deleted', 2),
]
]);
if ($validatormobile->fails()) {
return redirect()->back()->with('error', trans('messages.unique_mobile'));
}
$newemploye = new User;
$newemploye->name = $request->name;
$newemploye->mobile = $request->mobile;
$newemploye->email = $request->email;
$newemploye->password = Hash::make($request->password);
$newemploye->role_id = $request->role;
$newemploye->is_available = '1';
$newemploye->profile_image = 'unknown.png';
$newemploye->type = '4';
$newemploye->save();
return redirect('admin/employees')->with('success', trans('messages.success'));
}
public function employee_update(Request $request)
{
$validatoremail = Validator::make(['email' => $request->email], [
'email' => [
'required',
'email',
Rule::unique('users')->whereIn('type', [1, 4])->where('is_deleted', 2)->ignore($request->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')->whereIn('type', [1, 4])->where('is_deleted', 2)->ignore($request->id),
]
]);
if ($validatormobile->fails()) {
return redirect()->back()->with('error', trans('messages.unique_mobile'));
}
$editemployee = User::where('id', $request->id)->first();
$editemployee->name = $request->name;
$editemployee->mobile = $request->mobile;
$editemployee->email = $request->email;
$editemployee->role_id = $request->role;
if ($request->has('profile')) {
if ($editemployee->image != null && file_exists(storage_path('app/public/admin-assets/images/profile/' . $editemployee->image))) {
unlink(storage_path('app/public/admin-assets/images/profile/' . $editemployee->image));
}
$edit_image = $request->file('profile');
$profileImage = 'profile-' . uniqid() . "." . $edit_image->getClientOriginalExtension();
$edit_image->move(storage_path('app/public/admin-assets/images/profile/'), $profileImage);
$editemployee->profile_image = $profileImage;
}
$editemployee->update();
return redirect('admin/employees')->with('success', trans('messages.success'));
}
public function employee_status(Request $request)
{
$employee = User::where('id', $request->id)->first();
$employee->is_available = $request->status;
$employee->update();
return 1;
}
public function employee_delete(Request $request)
{
$employee = User::where('id', $request->id)->first();
$employee->delete();
return 1;
}
}