shell bypass 403
<?php
namespace Modules\Jobs\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Illuminate\Support\Str;
use Modules\Jobs\Entities\CareerLevel;
use Modules\Jobs\Entities\Company;
use Modules\Jobs\Entities\DegreeLevel;
use Modules\Jobs\Entities\FunctionalArea;
use Modules\Jobs\Entities\Gender;
use Modules\Jobs\Entities\Job;
use Modules\Jobs\Entities\JobExperience;
use Modules\Jobs\Entities\JobShift;
use Modules\Jobs\Entities\JobType;
use Modules\Jobs\Entities\SalaryPeriod;
use Modules\Jobs\Http\Requests\ApplyJobRequest;
use Modules\Location\Entities\City;
use Modules\Tracklink\Entities\Tracklink;
class JobsController extends Controller
{
public function getJobsList(Request $request, $q = '')
{
$skin = config('app.SITE_LANDING');
$currency_symbol = config('app.CURRENCY_SYMBOL');
$currency_code = config('app.CURRENCY_CODE');
$user = $request->user();
$cities = City::active()->orderBy('is_default', 'desc')->get();
$functional_areas = FunctionalArea::active()->orderBy('is_default', 'desc')->get();
$job_types = JobType::active()->orderBy('is_default', 'desc')->get();
$filter_city_id = $request->input('city');
$filter_functional_area_id = $request->input('functionalarea');
$filter_job_type_id = $request->input('jobtype');
$filter_salary_from = $request->input('salaryfrom');
$filter_salary_to = $request->input('salaryto');
$filter_featured = $request->input('featured');
$filter_lastest = $request->input('lastest');
$queryJobs = Job::query()->active()->where('title', 'like', '%' . $q . '%');
if(isset($filter_city_id)) {
$queryJobs->where('city_id', '=', $filter_city_id);
}
if(isset($filter_functional_area_id)) {
$queryJobs->where('functional_area_id', '=', $filter_functional_area_id);
}
if(isset($filter_job_type_id)) {
$queryJobs->where('job_type_id', '=', $filter_job_type_id);
}
if(isset($filter_salary_from)) {
$queryJobs->where('salary_to', '>=', $filter_salary_from);
}
if(isset($filter_salary_to)) {
$queryJobs->where('salary_from', '<=', $filter_salary_to);
}
if(isset($filter_featured) && $filter_featured == '1') {
$queryJobs->orderBy('is_featured', 'desc');
}
if(isset($filter_lastest) && $filter_lastest == '1') {
$queryJobs->orderBy('created_at', 'desc');
}
$data = $queryJobs->paginate(10);
return view('themes::' . $skin . '.jobs_list', compact(
'currency_code','currency_symbol','user', 'q', 'filter_city_id', 'filter_functional_area_id', 'filter_job_type_id', 'filter_salary_from', 'filter_salary_to', 'data', 'cities', 'functional_areas', 'job_types'
));
}
public function getJobDetail(Request $request, $slug)
{
$skin = config('app.SITE_LANDING');
$currency_symbol = config('app.CURRENCY_SYMBOL');
$currency_code = config('app.CURRENCY_CODE');
$user = $request->user();
$job = Job::where('slug', $slug)->active()->firstOrFail();
$siblings = Job::active()->where('id', '!=', $job->id)
->where('functional_area_id', '=', $job->functional_area_id)
->orderBy('is_featured', 'desc')->limit(8)->get();
Tracklink::save_from_request($request, Job::class, $job->id);
return view('themes::' . $skin . '.job_details', compact(
'currency_code','currency_symbol','user', 'job', 'siblings'
));
}
public function index(Request $request)
{
$data = Job::orderBy('created_at', 'DESC');
if ($request->filled('search'))
{
$data->where('title', 'like', '%' . $request->search . '%');
}
$data = $data->paginate(10);
return view('jobs::jobs.index', compact('data'));
}
public function create(Request $request)
{
$companies = Company::active()->get();
$cities = City::active()->get();
$careerLevels = CareerLevel::active()->get();
$salaryPeriods = SalaryPeriod::active()->get();
$functionalAreas = FunctionalArea::active()->get();
$genders = Gender::active()->get();
$jobTypes = JobType::active()->get();
$jobShifts = JobShift::active()->get();
$degreeLevels = DegreeLevel::active()->get();
$jobExperiences = JobExperience::active()->get();
return view('jobs::jobs.create', compact('companies', 'cities', 'careerLevels', 'salaryPeriods', 'functionalAreas', 'genders', 'jobTypes', 'jobShifts', 'degreeLevels', 'jobExperiences'));
}
public function store(Request $request)
{
$request->validate([
'company_id' => 'required',
'title' => 'required',
'city_id' => 'required',
'description' => 'required',
'responbilities' => 'required',
'requirements' => 'required'
]);
$inputData = $request->all();
!$request->filled('is_active') ? $inputData['is_active'] = false : $inputData['is_active'] = true;
!$request->filled('is_featured') ? $inputData['is_featured'] = false : $inputData['is_featured'] = true;
!$request->filled('is_freelance') ? $inputData['is_freelance'] = false : $inputData['is_freelance'] = true;
!$request->filled('hide_salary') ? $inputData['hide_salary'] = false : $inputData['hide_salary'] = true;
$item = Job::create($inputData);
$item->slug = Str::slug($item->title, '-') . '-' . $item->id;
$item->update();
return redirect()
->route('settings.jobs.index')
->with('success', __('Created successfully'));
}
public function edit(Request $request, $id)
{
$job = Job::findOrFail($id);
$companies = Company::active()->get();
$cities = City::active()->get();
$careerLevels = CareerLevel::active()->get();
$salaryPeriods = SalaryPeriod::active()->get();
$functionalAreas = FunctionalArea::active()->get();
$genders = Gender::active()->get();
$jobTypes = JobType::active()->get();
$jobShifts = JobShift::active()->get();
$degreeLevels = DegreeLevel::active()->get();
$jobExperiences = JobExperience::active()->get();
return view('jobs::jobs.edit', compact('job', 'companies', 'cities', 'careerLevels', 'salaryPeriods', 'functionalAreas', 'genders', 'jobTypes', 'jobShifts', 'degreeLevels', 'jobExperiences'));
}
public function update(Request $request, $id)
{
$request->validate([
'company_id' => 'required',
'title' => 'required',
'city_id' => 'required',
'description' => 'required',
'responbilities' => 'required',
'requirements' => 'required'
]);
$inputData = $request->all();
$item = Job::findorFail($id);
$inputData['slug'] = Str::slug($inputData['title'], '-') . '-' . $item->id;
!$request->filled('is_active') ? $inputData['is_active'] = false : $inputData['is_active'] = true;
!$request->filled('is_featured') ? $inputData['is_featured'] = false : $inputData['is_featured'] = true;
!$request->filled('is_freelance') ? $inputData['is_freelance'] = false : $inputData['is_freelance'] = true;
!$request->filled('hide_salary') ? $inputData['hide_salary'] = false : $inputData['hide_salary'] = true;
$item->update($inputData);
return redirect()
->back()
->with('success', __('Updated successfully'));
}
public function destroy(Request $request, $id)
{
$item = Job::findOrFail($id);
if ($item->applicants()->count() > 0) {
return redirect()->back()->with('error',"Can't delete because it has applicants in it");
}
$item->delete();
return redirect()->route('settings.companies.index')
->with('success', __('Deleted successfully'));
}
}