shell bypass 403
<?php namespace Modules\SystemSetting\Repositories; use App\Repositories\UserRepository; use App\Traits\ImageStore; use App\User; use Carbon\Carbon; use Illuminate\Support\Arr; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\File; use Modules\HumanResource\Entities\ApplyLeave; use Modules\HumanResource\Entities\LeaveDefine; use Modules\SystemSetting\Entities\Staff; use Twilio\TwiML\Voice\Leave; class LeaveRepository { use ImageStore; public function all() { if (auth()->user()->role->type == 'regular_user') { return ApplyLeave::with('leave_type')->where('user_id', auth()->user()->id)->latest()->get(); } else { return ApplyLeave::with('leave_type')->latest()->get(); } } public function create(array $data) { $to = Carbon::parse($data['start_date']); $from = $data['day'] == 2 ? Carbon::parse($data['end_date']) : ''; $total_days = $data['day'] == 2 ? $to->diffInDays($from)+1 : ($data['day'] == 1 ? 1 : 0.5); $data['apply_date'] = Carbon::parse($data['apply_date'])->format('Y-m-d'); $data['start_date'] = Carbon::parse($data['start_date'])->format('Y-m-d'); $data['end_date'] = $data['day'] == 2 ? Carbon::parse($data['end_date'])->format('Y-m-d') : ''; $data['user_id'] = $data['user']; $data['leave_from'] = array_key_exists('half',$data) || ($data['from_day'] ?? 0); $data['leave_to'] = array_key_exists('half_to',$data) ? $data['to_day'] : 0; if ($data['leave_to'] == $data['leave_from']) $data['total_days'] = $total_days; elseif(array_key_exists('half',$data) && array_key_exists('half_to',$data)) $data['total_days'] = $total_days - 0.5; if (!array_key_exists('makeup_leave',$data)) { $data['makeup_date'] = null; $data['makeup_leave'] = 0; } else{ $data['makeup_date'] = Carbon::parse($data['makeup_date'])->format('Y-m-d'); } $apply_leave = new ApplyLeave(); if (isset($data['file'])) { $data = Arr::add($data, 'attachment', $this->saveFile($data['file'])); } $data['created_by'] = Auth::id(); $apply_leave->fill($data)->save(); return $apply_leave; } public function find($id) { return ApplyLeave::findOrFail($id); } public function update(array $data, $id) { $to = Carbon::parse($data['start_date']); $from = $data['day'] == 2 ? Carbon::parse($data['end_date']) : ''; $total_days = $data['day'] == 2 ? $to->diffInDays($from)+1 : ($data['day'] == 1 ? 1 : 0.5); $data['apply_date'] = Carbon::parse($data['apply_date'])->format('Y-m-d'); $data['start_date'] = Carbon::parse($data['start_date'])->format('Y-m-d'); $data['end_date'] = $data['day'] == 2 ? Carbon::parse($data['end_date'])->format('Y-m-d') : ''; $data['user_id'] = Auth::id(); $data['leave_from'] = array_key_exists('half',$data) || ($data['from_day'] ?? 0); $data['leave_to'] = array_key_exists('half_to',$data) ? $data['to_day'] : 0; if ($data['leave_to'] == $data['leave_from']) $data['total_days'] = $total_days; elseif(array_key_exists('half',$data) && array_key_exists('half_to',$data)) $data['total_days'] = $total_days - 0.5; if (!array_key_exists('makeup_leave',$data)) { $data['makeup_date'] = null; $data['makeup_leave'] = 0; } $apply_leave = ApplyLeave::findOrFail($id); if (isset($data['file'])) { if (File::exists($apply_leave->attachment)) { File::delete($apply_leave->attachment); } $data = Arr::add($data, 'attachment', $this->saveFile($data['file'])); } $data['updated_by'] = Auth::id(); $apply_leave->update($data); return $apply_leave; } public function delete($id) { return ApplyLeave::destroy($id); } public function approved_all() { return ApplyLeave::with('user','leave_type','approveUser')->where('status', 1)->latest()->get(); } public function pending_all() { return ApplyLeave::with('user','leave_type','approveUser')->where('status', 0)->latest()->get(); } public function user_leave_history($id) { return ApplyLeave::with('user','leave_type','approveUser')->where('user_id', $id)->latest()->get(); } public function total_leave($id) { $user = User::find($id); return LeaveDefine::with('user','leave_type','approveUser')->where('role_id', $user->role_id)->latest()->get(); } public function change_approval(array $data) { $apply_leave = ApplyLeave::findOrFail($data['id']); $apply_leave->status = $data['status']; $apply_leave->approved_by = auth()->id(); $apply_leave->save(); return $apply_leave; } public function generate() { $repo = new UserRepository(); $users = $repo->user()->whereNotIn('id',[1,2]); foreach ($users as $user) { if ($user->staff != null) { $user->staff->update([ 'carry_forward' => $user->CarryForward, ]); } } return $users; } public function updateCarryForward($data) { $repo = new UserRepository(); $staff = Staff::find($data['id']); $datai = $data['status'] == 1 ? $data['day'] ?? 0 : 0; $staff->update([ 'carry_forward' => $datai, 'is_carry_active' => $data['status'] ]); return $staff; } public function totalLeave($id) { $user = User::find($id); $now = date('Y'); $leaves = LeaveDefine::where('user_id', $user->id)->where('year',$now)->latest()->get(); $leaves_types = $leaves->pluck('leave_type_id')->toArray(); $user_leave = LeaveDefine::where('user_id', $user->id)->where('year',null)->whereNotIn('leave_type_id',$leaves_types)->latest()->get(); $user_leaves_types = $user_leave->pluck('leave_type_id')->toArray(); $role_leave = LeaveDefine::where('role_id', $user->role_id)->where('user_id',0) ->whereNotIn('leave_type_id',$leaves_types)->whereNotIn('leave_type_id',$user_leaves_types)->sum('total_days'); $total_user_leave = count($leaves) > 0 ? $leaves->sum('total_days') + $role_leave : $user_leave->sum('total_days') + $role_leave; return $total_user_leave; } public function monthlyLeave($id, $payroll_month, $payroll_year) { return ApplyLeave::whereMonth('start_date',$payroll_month)->whereYear('start_date',$payroll_year)->where('user_id',$id) ->where('makeup_leave',0)->where('status',1)->get(); } }