diff --git a/backend/app/api/files.py b/backend/app/api/files.py index b3ac8ab..6e15ecc 100644 --- a/backend/app/api/files.py +++ b/backend/app/api/files.py @@ -421,8 +421,8 @@ def create_share_link(file_id): max_downloads = data.get('max_downloads') permission = data.get('permission', 'read') - if permission not in ('read', 'write'): - return jsonify({'error': 'Berechtigung muss "read" oder "write" sein'}), 400 + if permission not in ('read', 'write', 'upload_only'): + return jsonify({'error': 'Berechtigung muss "read", "write" oder "upload_only" sein'}), 400 token = secrets.token_urlsafe(32) password_hash = None @@ -498,7 +498,8 @@ def share_info(token): 'mime_type': f.mime_type, 'has_password': bool(link.password_hash), 'permission': link.permission, - 'upload_allowed': f.is_folder and link.permission == 'write', + 'upload_allowed': f.is_folder and link.permission in ('write', 'upload_only'), + 'download_allowed': link.permission in ('read', 'write'), }), 200 @@ -531,6 +532,9 @@ def share_download(token): if not link: return jsonify({'error': 'Link nicht gefunden'}), 404 + if link.permission == 'upload_only': + return jsonify({'error': 'Dieser Link erlaubt nur Upload, keinen Download'}), 403 + if link.is_expired(): return jsonify({'error': 'Link abgelaufen'}), 410 @@ -576,9 +580,9 @@ def share_upload(token): if link.is_expired(): return jsonify({'error': 'Link abgelaufen'}), 410 - # Check write permission - if link.permission != 'write': - return jsonify({'error': 'Dieser Link erlaubt nur Lesen'}), 403 + # Check write/upload permission + if link.permission not in ('write', 'upload_only'): + return jsonify({'error': 'Dieser Link erlaubt keinen Upload'}), 403 # Check password if set if link.password_hash: diff --git a/frontend/src/views/FilesView.vue b/frontend/src/views/FilesView.vue index 4b44523..24fb924 100644 --- a/frontend/src/views/FilesView.vue +++ b/frontend/src/views/FilesView.vue @@ -184,7 +184,7 @@
-

{{ fileInfo.name }}

-

{{ formatSize(fileInfo.size) }}

- +

{{ fileInfo.name }}

+

Datei-Upload

+

{{ formatSize(fileInfo.size) }}

+

Diese Freigabe ist passwortgeschuetzt.

@@ -28,8 +29,8 @@
- -
+ +
+ +

+ Dieser Link erlaubt nur das Hochladen von Dateien. +

+