Skip to content

Commit bb60cac

Browse files
committed
feat: added cross course security check when batch deleting files
1 parent a3b2181 commit bb60cac

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

assets/js/Services/Api.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export default class Api {
1212
reviewFile: '/api/files/{file}/review',
1313
postFile: '/api/files/{file}/post',
1414
deleteFile: '/api/files/{file}/delete',
15-
batchDelete: 'api/files/delete',
15+
batchDelete: '/api/{course}/files/delete',
1616
updateContent: '/api/{file}/content',
1717
reportPdf: '/download/courses/{course}/reports/pdf',
1818
adminCourses: '/api/admin/courses/account/{account}/term/{term}',
@@ -187,6 +187,7 @@ export default class Api {
187187
batchDelete(urlList) {
188188
const authToken = this.getAuthToken()
189189
let url = `${this.apiUrl}${this.endpoints.batchDelete}`
190+
url = url.replace('{course}', this.getCourseId())
190191

191192
return fetch(url, {
192193
method: 'DELETE',

src/Controller/FileItemsController.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use App\Entity\FileItem;
66
use App\Entity\ContentItem;
7+
use App\Entity\Course;
78
use App\Response\ApiResponse;
89
use App\Services\LmsPostService;
910
use App\Services\LmsFetchService;
@@ -200,11 +201,15 @@ public function deleteFile(SessionService $sessionService, FileItem $file, Utili
200201
return new JsonResponse($apiResponse);
201202
}
202203

203-
#[Route('/api/files/delete', methods: ['DELETE'], name: 'delete_files')]
204-
public function batchDeleteFiles(Request $request, UtilityService $util, LmsPostService $lmsPost, LmsFetchService $lmsFetch){
204+
#[Route('/api/{course}/files/delete', methods: ['DELETE'], name: 'delete_files')]
205+
public function batchDeleteFiles(SessionService $sessionService, Course $course, Request $request, UtilityService $util, LmsPostService $lmsPost, LmsFetchService $lmsFetch){
205206
$apiResponse = new ApiResponse();
206207
$user = $this->getUser();
207208
try{
209+
if (!$this->userHasCourseAccess($course, $sessionService)) {
210+
throw new \Exception("You do not have permission to access this issue.");
211+
}
212+
208213
$content= \json_decode($request->getContent(), true);
209214
$paths = $content['paths'];
210215
$apiResponse = $lmsPost->batchDeleteFromLms($paths, $user);

0 commit comments

Comments
 (0)