Skip to content

Commit 42e4318

Browse files
committed
add separate method for hecking read access of file
1 parent fd7298c commit 42e4318

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

services/storage/src/simcore_service_storage/api/rpc/_data_export.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
)
1111
from servicelib.rabbitmq import RPCRouter
1212

13-
from ...dsm import get_dsm_provider
13+
from ...dsm import DatCoreDataManager, get_dsm_provider
1414
from ...modules.datcore_adapter.datcore_adapter import DatcoreAdapterError
15-
from ...simcore_s3_dsm import FileAccessRightError
15+
from ...simcore_s3_dsm import FileAccessRightError, SimcoreS3DataManager
1616

1717
router = RPCRouter()
1818

@@ -33,7 +33,11 @@ async def start_data_export(
3333

3434
try:
3535
for _id in data_export_start.file_and_folder_ids:
36-
_ = await dsm.get_file(user_id=data_export_start.user_id, file_id=_id)
36+
if isinstance(dsm, DatCoreDataManager):
37+
_ = await dsm.get_file(user_id=data_export_start.user_id, file_id=_id)
38+
elif isinstance(dsm, SimcoreS3DataManager):
39+
await dsm.can_read_file(user_id=data_export_start.user_id, file_id=_id)
40+
3741
except (FileAccessRightError, DatcoreAdapterError) as err:
3842
raise AccessRightError(
3943
user_id=data_export_start.user_id,

services/storage/src/simcore_service_storage/simcore_s3_dsm.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,12 @@ async def get_file(self, user_id: UserID, file_id: StorageFileID) -> FileMetaDat
355355
fmd = await self._update_database_from_storage(fmd)
356356
return convert_db_to_model(fmd)
357357

358+
async def can_read_file(self, user_id: UserID, file_id: StorageFileID):
359+
async with self.engine.connect() as conn:
360+
can = await get_file_access_rights(conn, int(user_id), file_id)
361+
if not can.read:
362+
raise FileAccessRightError(access_right="read", file_id=file_id)
363+
358364
async def create_file_upload_links(
359365
self,
360366
user_id: UserID,

0 commit comments

Comments
 (0)