diff --git a/app/Repositories/ExamRepository.php b/app/Repositories/ExamRepository.php index a2fd842a..61b9bcf7 100644 --- a/app/Repositories/ExamRepository.php +++ b/app/Repositories/ExamRepository.php @@ -338,7 +338,13 @@ class ExamRepository extends BaseRepository return false; } - return true; + try { + $user->checkIsNormal(); + return true; + } catch (\Throwable $throwable) { + do_log("$logPrefix, user is not normal: " . $throwable->getMessage()); + return false; + } } @@ -1115,6 +1121,16 @@ class ExamRepository extends BaseRepository do_log("$currentLogPrefix, [is_done]"); $subjectTransKey = 'exam.checkout_pass_message_subject'; $msgTransKey = 'exam.checkout_pass_message_content'; + if (!empty($exam->recurring) && $this->isExamMatchUser($exam, $examUser->user)) { + $examUserToInsert[] = [ + 'uid' => $examUser->user->id, + 'exam_id' => $exam->id, + 'begin' => $exam->getBeginForUser(), + 'end' => $exam->getEndForUser(), + 'created_at' => $now, + 'updated_at' => $now, + ]; + } } else { do_log("$currentLogPrefix, [will be banned]"); clear_user_cache($examUser->user->id, $examUser->user->passkey); @@ -1152,16 +1168,6 @@ class ExamRepository extends BaseRepository 'subject' => $subject, 'msg' => $msg ]; - if (!empty($exam->recurring) && $this->isExamMatchUser($exam, $examUser->user)) { - $examUserToInsert[] = [ - 'uid' => $examUser->user->id, - 'exam_id' => $exam->id, - 'begin' => $exam->getBeginForUser(), - 'end' => $exam->getEndForUser(), - 'created_at' => $now, - 'updated_at' => $now, - ]; - } } DB::transaction(function () use ($uidToDisable, $messageToSend, $examUserIdArr, $examUserToInsert, $userBanLog, $userModcommentUpdate, $userTable, $logPrefix) { ExamUser::query()->whereIn('id', $examUserIdArr)->update(['status' => ExamUser::STATUS_FINISHED]); diff --git a/include/constants.php b/include/constants.php index 40d2701c..5c5515ca 100644 --- a/include/constants.php +++ b/include/constants.php @@ -1,6 +1,6 @@