@@ -422,8 +422,14 @@ public function actionReplaceFile(): Response
422422 throw new NotFoundHttpException ('Asset not found. ' );
423423 }
424424
425- $ this ->requireVolumePermissionByAsset ('replaceFiles ' , $ assetToReplace ?: $ sourceAsset );
426- $ this ->requirePeerVolumePermissionByAsset ('replacePeerFiles ' , $ assetToReplace ?: $ sourceAsset );
425+ if ($ assetToReplace ) {
426+ $ this ->requireVolumePermissionByAsset ('replaceFiles ' , $ assetToReplace );
427+ $ this ->requirePeerVolumePermissionByAsset ('replacePeerFiles ' , $ assetToReplace );
428+ }
429+ if ($ sourceAsset ) {
430+ $ this ->requireVolumePermissionByAsset ('replaceFiles ' , $ sourceAsset );
431+ $ this ->requirePeerVolumePermissionByAsset ('replacePeerFiles ' , $ sourceAsset );
432+ }
427433
428434 // Handle the Element Action
429435 if ($ assetToReplace !== null && $ uploadedFile ) {
@@ -740,11 +746,17 @@ public function actionMoveFolder(): Response
740746 throw new BadRequestHttpException ('The destination folder does not exist ' );
741747 }
742748
743- // Check if it's possible to delete objects in the source volume, create folders
744- // in the target volume, and save assets in the target volume.
745- $ this ->requireVolumePermissionByFolder ('deleteAssets ' , $ folderToMove );
746- $ this ->requireVolumePermissionByFolder ('createFolders ' , $ destinationFolder );
749+ // Make sure the user has permission to move the source folder
750+ // (same permissions checked for `data-movable`)
751+ $ this ->requireVolumePermissionByFolder ('savePeerAssets ' , $ folderToMove );
752+ $ this ->requireVolumePermissionByFolder ('deletePeerAssets ' , $ folderToMove );
753+
754+ // Make sure the user has permission to move folders into the target folder
755+ // (same permissions checked for `data-can-move-to`)
747756 $ this ->requireVolumePermissionByFolder ('saveAssets ' , $ destinationFolder );
757+ $ this ->requireVolumePermissionByFolder ('deleteAssets ' , $ destinationFolder );
758+ $ this ->requireVolumePermissionByFolder ('savePeerAssets ' , $ destinationFolder );
759+ $ this ->requireVolumePermissionByFolder ('deletePeerAssets ' , $ destinationFolder );
748760
749761 $ targetVolume = $ destinationFolder ->getVolume ();
750762
0 commit comments