From 47333f66e82cf72b999b15cc368024b5beb17677 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kruli=C5=A1?= Date: Mon, 9 Jun 2025 11:32:31 +0200 Subject: [PATCH 1/2] Allow regular supervisors see IP addresses of exam locks. --- app/config/permissions.neon | 2 +- tests/Presenters/GroupsPresenter.phpt | 31 --------------------------- 2 files changed, 1 insertion(+), 32 deletions(-) diff --git a/app/config/permissions.neon b/app/config/permissions.neon index 41224d8ba..2834f66b1 100644 --- a/app/config/permissions.neon +++ b/app/config/permissions.neon @@ -309,7 +309,7 @@ permissions: - allow: true resource: group - role: empowered-supervisor + role: supervisor actions: - viewExamLocksIPs conditions: diff --git a/tests/Presenters/GroupsPresenter.phpt b/tests/Presenters/GroupsPresenter.phpt index 477dab8e6..aaf7996b8 100644 --- a/tests/Presenters/GroupsPresenter.phpt +++ b/tests/Presenters/GroupsPresenter.phpt @@ -1788,40 +1788,9 @@ class TestGroupsPresenter extends Tester\TestCase ); } - public function testGetExamLocks() - { - $group = $this->prepExamGroup(); // logged in as supervisor - $student = $this->presenter->users->getByEmail("demoGroupMember1@example.com"); - - $now = (new DateTime())->getTimestamp(); - $begin = $now - 7200; - $end = $now - 3600; - $group->setExamPeriod(DateTime::createFromFormat('U', $begin), DateTime::createFromFormat('U', $end)); - $this->presenter->groups->persist($group); - - $exam = new GroupExam($group, DateTime::createFromFormat('U', $begin), DateTime::createFromFormat('U', $end), false); - $this->presenter->groupExams->persist($exam); - - $lock = new GroupExamLock($exam, $student, '1.2.3.4'); - $this->presenter->groupExamLocks->persist($lock); - - $payload = PresenterTestHelper::performPresenterRequest( - $this->presenter, - 'V1:Groups', - 'GET', - ['action' => 'getExamLocks', 'id' => $group->getId(), 'examId' => $exam->getId()], - ); - - Assert::count(1, $payload); - Assert::equal($exam->getId(), $payload[0]['groupExamId']); - Assert::equal($student->getId(), $payload[0]['studentId']); - Assert::false(array_key_exists('remoteAddr', $payload[0])); // supervisor cannot se IPs - } - public function testGetExamLocksWithIPs() { $group = $this->prepExamGroup(); - PresenterTestHelper::loginDefaultAdmin($this->container); // admin can see IPs $student = $this->presenter->users->getByEmail("demoGroupMember1@example.com"); $now = (new DateTime())->getTimestamp(); From ddd4e5af2938ebb4b3bd85c72fd6a2437f970ef0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kruli=C5=A1?= Date: Mon, 9 Jun 2025 19:49:58 +0200 Subject: [PATCH 2/2] Normalize line endings in file content previews. --- app/V1Module/presenters/UploadedFilesPresenter.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/V1Module/presenters/UploadedFilesPresenter.php b/app/V1Module/presenters/UploadedFilesPresenter.php index 351e175c6..f2bef12e5 100644 --- a/app/V1Module/presenters/UploadedFilesPresenter.php +++ b/app/V1Module/presenters/UploadedFilesPresenter.php @@ -264,6 +264,7 @@ public function actionContent(string $id, ?string $entry = null) // Remove UTF BOM prefix... $utf8bom = "\xef\xbb\xbf"; $contents = Strings::replace($contents, "~^$utf8bom~"); + $contents = str_replace("\r\n", "\n", $contents); // normalize line endings $fixedContents = @mb_convert_encoding($contents, 'UTF-8', 'UTF-8');