/** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { // the user must be verified $user = Request::user(); // there must NOT be a grader for the user $grader = Grader::where('user_id', $user->id)->first(); return $user && $user->verified && !$user->hasRole('grader_a'); }
/** * The suggested grader has not accepted yet * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $user = $request->user(); //$suggestion = Suggestion::where('suggestor_email', $user->email)->first(); //$suggestion = $user->suggestion; $user = $request->user(); $grader = Grader::where('user_id', $user->id)->first(); // if($user->grader_status == 'na' || str_contains($user->grader_status, 'not_accepted')){ // return $next($request); // } if ($grader && !$user->hasRole('grader_a')) { return $next($request); } if (!$grader) { return $next($request); } return redirect()->route('home'); }
public function handle_suggestion_answer($answer, $unique_string) { // find the suggestion $suggestion = Suggestion::where('unique_string', $unique_string)->first(); // The grader has accepted if ($answer == 'yes') { $suggestion->logOutOtherUser(); $grader_email = $suggestion->grader_email; // Check if the grader has already registered $user = User::where('email', $grader_email)->first(); // There is already a grader A with this email if ($user && $user->hasRole('grader_a')) { $user->grader_status .= ',accepted'; $user->save(); $suggestion->accepted = 'yes'; $suggestion->save(); $grader = Grader::where('user_id', $user->id)->first(); $suggestions_count = $grader->suggestions_count; $suggestions_count = $suggestions_count + 1; $grader->suggestions_count = $suggestions_count; $grader->save(); // Notify the user $suggestion->sendAcceptanceEmail($grader->last_name, $grader->first_name); return redirect()->route('home'); } // There is already a user with this email // The user is verified if ($user && $user->verified) { // check if the user is logged in if (!Auth::check()) { Auth::login($user); } if (Auth::user()->hasRole('grader_b')) { $grader = Auth::user()->grader; return view('graders.forms.create', compact('grader')); } return view('graders.forms.create', compact('answer')); } // The user is not verified if ($user && !$user->verified) { // check if the user is logged in if (Auth::check()) { flash()->error('<strong>Το email σας δεν έχει επιβεβαιωθεί. Παρακαλούμε επιβεβεβαιώστε το email σας ή ζητήστε να σας έλθει εκ νέου το email επιβεβαίωσης.</strong>'); return redirect()->route('home'); } else { flash()->error('<strong>Έχει βρεθεί λογαριασμός με αυτό το email, αλλά το email δεν έχει επιβεβαιωθεί. Παρακαλούμε επιβεβεβαιώστε το email σας ή συνδεθείτε και ζητήστε να σας έλθει εκ νέου το email επιβεβαίωσης.</strong>'); return redirect()->route('home'); } } // There is not such a user return view('graders.new_grader_other', compact('grader_email', 'unique_string')); } else { // The grader has NOT accepted // Notify the user $suggestion->sendDenialEmail(); // Delete the suggestion Suggestion::destroy($suggestion->id); return redirect()->route('home'); } }