shell bypass 403
<?php namespace App\Http\Controllers\Frontend; use App\Http\Controllers\Controller; use App\LessonComplete; use Brian2694\Toastr\Facades\Toastr; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Modules\CourseSetting\Entities\Course; use Modules\CourseSetting\Entities\CourseComment; use Modules\CourseSetting\Entities\CourseEnrolled; use Modules\CourseSetting\Entities\Lesson; use Modules\FrontendManage\Entities\FrontPage; use Modules\Quiz\Entities\OnlineExamQuestionAssign; use Modules\Quiz\Entities\QuestionBankMuOption; use Modules\Quiz\Entities\QuizTestDetailsAnswer; use Modules\Quiz\Entities\QuizMarking; use Modules\Quiz\Entities\QuizTest; use Modules\Quiz\Entities\QuizTestDetails; class QuizController extends Controller { public function __construct() { $this->middleware('maintenanceMode'); } public function quizzes(Request $request) { try { if (hasDynamicPage()) { $row = FrontPage::where('slug', '/quizzes')->first(); $details = dynamicContentAppend($row->details); return view('aorapagebuilder::pages.show', compact('row', 'details')); } else { return view(theme('pages.quizzes'), compact('request')); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function quizDetails($slug, Request $request) { try { $course = Course::select( 'courses.id', 'courses.type', 'courses.slug', 'courses.image', 'courses.trailer_link', 'courses.thumbnail', 'courses.title', 'courses.level', 'courses.host', 'courses.host', 'courses.status', 'courses.about', 'courses.quiz_id', 'courses.reveiw', 'courses.duration', 'courses.type', 'courses.total_enrolled', 'courses.special_commission', 'courses.duration', 'courses.slug', 'courses.user_id', 'courses.price', 'courses.requirements', 'courses.outcomes', 'courses.discount_price', 'users.name as userName' )->leftJoin('users', 'courses.user_id', 'users.id') ->where('courses.slug', $slug)->first(); if (!$course) { Toastr::error(trans('common.Operation failed'), trans('common.Failed')); return redirect()->back(); } if (isModuleActive('OrgSubscription') && Auth::check()) { if (!orgSubscriptionCourseValidity($course->id)) { Toastr::warning(trans('org-subscription.Your Subscription Expire')); return back(); } if (!orgSubscriptionCourseSequence($course->id)) { Toastr::warning(trans('org.subscription.You Can Not Continue This . Pls Complete Previous Course')); return back(); } } if (!isViewable($course)) { Toastr::error(trans('common.Access Denied'), trans('common.Failed')); return redirect()->to(route('quizzes')); } if (empty($course->quiz->id)) { Toastr::error('No Quiz Assign', trans('common.Failed')); return \redirect()->back(); } if (Auth::check()) { $isEnrolled = $course->isLoginUserEnrolled; } else { $isEnrolled = false; } if ($isEnrolled) { $enroll = CourseEnrolled::where('user_id', Auth::id())->where('course_id', $course->id)->first(); if ($enroll) { if ($enroll->subscription == 1) { if (isModuleActive('Subscription')) { if (!isSubscribe()) { Toastr::error('Subscription has expired, Please Subscribe again.', 'Failed'); return redirect()->route('courseSubscription'); } } } } } $data = ''; $reviews = DB::table('course_reveiws') ->select( 'course_reveiws.id', 'course_reveiws.star', 'course_reveiws.comment', 'course_reveiws.instructor_id', 'course_reveiws.created_at', 'users.id as userId', 'users.name as userName', ) ->join('users', 'users.id', '=', 'course_reveiws.user_id') ->where('course_reveiws.course_id', $course->id)->paginate(10); if ($request->ajax()) { if ($request->type == "review") { foreach ($reviews as $review) { $data .= view(theme('partials._single_review'), ['review' => $review, 'isEnrolled' => $isEnrolled, 'course' => $course])->render(); } if (count($reviews) == 0) { $data .= ''; } return $data; } } $comments = CourseComment::where('course_id', $course->id)->with('replies', 'replies.user', 'user')->paginate(10); if ($request->ajax()) { if ($request->type == "comment") { foreach ($comments as $comment) { $data .= view(theme('partials._single_comment'), ['comment' => $comment, 'isEnrolled' => $isEnrolled, 'course' => $course])->render(); } return $data; } } $course->view = $course->view + 1; $course->save(); return view(theme('pages.quizDetails'), compact('course', 'request', 'isEnrolled')); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function quizStart($id, $quiz_id, $slug) { try { $course = Course::where('courses.id', $id)->first(); if (Auth::check() && $course->isLoginUserEnrolled) { return view(theme('pages.quizStart'), compact('course', 'quiz_id')); } else { Toastr::error('Permission Denied', 'Failed'); return redirect()->back(); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function quizSubmit(Request $request) { // return $request; try { $allAns = $request->ans; $userId = Auth::id() ?? 0; $courseId = $request->get('courseId'); $quizId = $request->get('quizId'); $questions = $request->get('question'); $quiz_test = QuizTest::with('quiz', 'details')->find($request->quiz_test_id); if (!$quiz_test) { $quiz_test = new QuizTest(); } if ($quiz_test->quiz_id) { $marking = QuizMarking::where('quiz_id', $quiz_test->quiz_id)->where('quiz_test_id', $quiz_test->id)->where('student_id', $userId)->first(); } else { $marking = null; } if ($marking) { $quiz_marking = $marking; } else { $quiz_marking = new QuizMarking(); } $quiz_marking->quiz_id = $quiz_test->quiz_id; $quiz_marking->quiz_test_id = $quiz_test->id; $quiz_marking->student_id = $userId; if (in_array('L', $request->type) || in_array('S', $request->type)) { $quiz_marking->marking_status = 0; $quiz_test->publish = 0; } else { $totalCorrect = 0; $score = 0; if ($quiz_test->details) { foreach ($quiz_test->details as $test) { $score += $test->mark ?? 1; } } $quiz_marking->marked_by = 0; $quiz_marking->marking_status = 1; $quiz_marking->marks = $score; $quiz_test->publish = 1; } $quiz_marking->save(); $quiz_test->focus_lost = $request->focus_lost; $quiz_test->save(); Toastr::success('Successfully submitted', 'Success'); if ($request->from == "course") { $previousUrl = app('url')->previous(); return redirect()->to($previousUrl . '?' . http_build_query(['quiz_result_id' => $quiz_test->id])); } else { return redirect()->route('getQuizResult', $quiz_test->id); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function quizResult($id) { try { $user = Auth::user(); $quiz = QuizTest::with('quiz')->findOrFail($id); if ($quiz->user_id == $user->id) { $course = Course::findOrFail($quiz->course_id); return view(theme('pages.quizResult'), compact('quiz', 'user', 'course')); } else { Toastr::error('Permission Denied', 'Failed'); return redirect()->back(); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function quizResultPreview($id) { $quizTest = QuizTest::findOrFail($id); try { $user = Auth::user(); if (Auth::check() && $quizTest->user_id == $user->id) { $course = Course::with('quiz') ->where('courses.id', $quizTest->course_id)->first(); return view(theme('pages.quizResultPreview'), compact('user', 'quizTest', 'course')); } else { Toastr::error('Permission Denied', 'Failed'); return redirect()->back(); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function quizTestStart(Request $request) { try { $userId = Auth::id(); $courseId = $request->get('courseId'); $quizId = $request->get('quizId'); $quizType = $request->get('quizType'); $quiz = new QuizTest(); $quiz->user_id = $userId; $quiz->course_id = $courseId; $quiz->quiz_id = $quizId; $quiz->quiz_type = $quizType; $quiz->start_at = now(); $quiz->end_at = null; $quiz->duration = 0.00; $quiz->save(); $return['result'] = true; $return['data'] = $quiz; } catch (\Exception $e) { $return['result'] = true; $return['data'] = null; } return $return; } public function singleQuizSubmit(Request $request) { try { $answer = $request->ans; $userId = Auth::id(); $type = $request->get('type'); $assign_id = $request->get('assign_id'); $quiz_test_id = $request->get('quiz_test_id'); $assign = OnlineExamQuestionAssign::with('questionBank')->find($assign_id); $qus = $assign->question_bank_id; $quizTest = QuizTest::find($quiz_test_id); $start_at = Carbon::parse($quizTest->start_at); $end_at = Carbon::now(); if ($quizTest->focus_lost < $request->focus_lost) { $quizTest->focus_lost = $request->focus_lost; } $quizTest->end_at = $end_at; $quizTest->duration = number_format(abs(strtotime($start_at) - strtotime($end_at)) / 60, 2) ?? 0.00; $quizTest->save(); $check_details = QuizTestDetails::where('quiz_test_id', $quiz_test_id)->where('qus_id', $qus)->first(); if ($check_details) { $quizDetails = $check_details; } else { $quizDetails = new QuizTestDetails(); $quizDetails->quiz_test_id = $quiz_test_id; $quizDetails->qus_id = $qus; $quizDetails->status = 0; $quizDetails->mark = $assign->questionBank->marks; $quizDetails->save(); } if ($type == "M") { $alreadyAns = QuizTestDetailsAnswer::where('quiz_test_details_id', $quizDetails->id)->get(); $totalCorrectAns = QuestionBankMuOption::where('status', 1)->where('question_bank_id', $assign->question_bank_id)->count(); foreach ($alreadyAns as $already) { $already->delete(); } $wrong = 0; $userCorrectAns = 0; if (!empty($answer)) { foreach ($answer as $ans) { $setAns = new QuizTestDetailsAnswer(); $option = QuestionBankMuOption::with('question')->find($ans); if ($option) { $setAns->quiz_test_details_id = $quizDetails->id; $setAns->ans_id = $ans; $setAns->status = $option->status; $setAns->save(); if ($setAns->status == 0) { $wrong++; } elseif ($setAns->status == 1) { $userCorrectAns++; } } } if ($wrong == 0) { if ($userCorrectAns == $totalCorrectAns) { $quizDetails->status = 1; } else { $quizDetails->status = 0; } } else { $quizDetails->status = 0; } $quizDetails->save(); } } else { $quizDetails->quiz_test_id = $quiz_test_id; $quizDetails->qus_id = $qus; $quizDetails->answer = $answer; $quizDetails->status = 0; $quizDetails->mark = 0; $quizDetails->save(); } return $quizDetails->status; } catch (\Exception $e) { return false; } } public function quizResultPreviewApi($quiz_id) { $quizTest = QuizTest::with('quiz', 'quiz.assign', 'quiz.assign.questionBank', 'quiz.assign.questionBank.questionMu')->findOrFail($quiz_id); $questions = []; foreach ($quizTest->quiz->assign as $key => $assign) { $test = QuizTestDetails::where('quiz_test_id', $quizTest->id)->where('qus_id', $assign->questionBank->id)->first(); $questions[$key]['isSubmit'] = false; $questions[$key]['isWrong'] = false; $questions[$key]['id'] = $assign->questionBank->id; if ($assign->questionBank->type == "M") { foreach (@$assign->questionBank->questionMuInSerial as $key2 => $option) { $questions[$key]['option'][$key2]['id'] = $option->id; $questions[$key]['option'][$key2]['title'] = $option->title; $questions[$key]['option'][$key2]['right'] = $option->status == 1 ? true : false; $questions[$key]['option'][$key2]['wrong'] = false; if ($test) { $questions[$key]['isSubmit'] = true; $wrong = $test->answers->where('ans_id', $option->id)->where('status', 0)->count(); if ($test->status == 0 && $wrong != 0) { $questions[$key]['option'][$key2]['wrong'] = $test->status == 0 ? true : false; $questions[$key]['isWrong'] = true; } } } } } return $questions; } }