Leon Bösche
70b5b1a4f3
Refactor file download handlers to utilize getMimeType function for content type determination, enhancing support for various file formats.
2026-01-14 17:47:28 +01:00
Leon Bösche
a5dd8d8f39
Refactor video viewer to use HTML5 video element and remove legacy web implementation; enhance content type handling for various video formats in download handlers.
2026-01-14 12:41:56 +01:00
Leon Bösche
5434a9b39d
Enhance WOPI file info handler to include user-friendly name and ensure last modified time is set correctly
2026-01-14 12:29:24 +01:00
Leon Bösche
fc06f5e36a
Enhance editor logging for file sessions in routes and update video URL handling in file explorer
2026-01-14 12:23:31 +01:00
Leon Bösche
40f7eeee09
Ensure folderPath ends with / for proper relative path calculation in ZIP downloads
2026-01-14 12:11:25 +01:00
Leon Bösche
de720cbdcb
Add user file editor endpoint and enhance WOPI handlers with logging
2026-01-14 12:09:25 +01:00
Leon Bösche
aea5ba9e58
Add functionality to download folders as ZIP archives for both org and user files
2026-01-14 12:02:20 +01:00
Leon Bösche
847a8de414
Refactor moveUserFileHandler to store user files directly in WebDAV root, removing unnecessary path prefix
2026-01-13 22:31:58 +01:00
Leon Bösche
47e94995b5
Refactor viewmodels and enhance security documentation; remove unused viewmodels, add path sanitization, and implement rate limiting
2026-01-13 22:11:02 +01:00
Leon Bösche
6ce43a3c9b
Add last modified tracking: show 'Last modified: date by username' in document viewer
...
- Added modified_by column to files table
- Updated WOPI PutFile to track who modified the file
- Updated view handlers to return file metadata (name, size, lastModified, modifiedByName)
- Updated Flutter models and UI to display last modified info
2026-01-13 16:45:57 +01:00
Leon Bösche
6943e95479
Fix WOPI: Use correct WebDAV path for org files (/orgs/{orgId}/ prefix)
2026-01-13 16:10:57 +01:00
Leon Bösche
2e1096a9ad
Add id attribute to form field to fix autofill warning
2026-01-13 15:48:20 +01:00
Leon Bösche
8d9db29db2
Fix WOPI: Use config for Nextcloud URL instead of hardcoded nc.b0esche.cloud
2026-01-13 15:25:04 +01:00
Leon Bösche
70039a8288
Fix Collabora WOPI: Put WOPISrc in URL query param, not form body
2026-01-13 14:50:24 +01:00
Leon Bösche
749672509b
Fix Collabora: Fetch versioned editor URL from discovery endpoint
...
- Added getCollaboraEditorURL() to fetch correct /browser/{version}/cool.html path
- Cache discovery response for 5 minutes to avoid repeated requests
- Fixed 'Invalid URI' error caused by version mismatch
2026-01-13 14:38:08 +01:00
Leon Bösche
0aa281ac09
Add .gitignore for docker-compose-server.yml and update WOPISrc URL handling in collaboraProxyHandler
2026-01-13 14:01:02 +01:00
Leon Bösche
8baaad2c08
Fix Collabora form submission: remove iframe target and use _self to bypass CSP
2026-01-13 12:59:49 +01:00
Leon Bösche
19825763ad
Fix Collabora endpoint: use /browser/dist/cool.html instead of /loleaflet/dist/loleaflet.html
2026-01-13 12:46:56 +01:00
Leon Bösche
c16cd49237
Use /loleaflet/dist/loleaflet.html - standard Collabora Online WOPI endpoint
2026-01-13 00:28:34 +01:00
Leon Bösche
57eea172a2
Revert to form POST submission to /cool/dist/cool.html (correct WOPI pattern)
...
- Collabora Online requires POST request with WOPISrc in form body
- GET requests with query parameters cause 400 Bad Request
- Using modern /cool/ endpoint with form submission to iframe
2026-01-13 00:13:21 +01:00
Leon Bösche
d255f40a8c
Try Collabora path /cool/dist/cool.html (newer naming convention)
2026-01-12 17:25:53 +01:00
Leon Bösche
d59a655f0f
Fix Collabora path from /loleaflet to /lool (correct endpoint)
2026-01-12 17:11:50 +01:00
Leon Bösche
509983b4ff
Fix: Update Collabora proxy to load editor in iframe with WOPISrc in query string
2026-01-12 16:58:39 +01:00
Leon Bösche
5fb08d8831
Improve Collabora proxy: add load event listener and relax iframe sandbox for form submission
...
- Use window load event to ensure form element exists before submission
- Add allow-popups-to-escape-sandbox for cross-origin form POSTs
- Add allow-presentation for better compatibility
- Improved error logging for debugging form submission issues
2026-01-12 16:51:16 +01:00
Leon Bösche
18f5b3f98b
Fix: Use form POST submission for Collabora (not GET query string)
...
- Collabora requires POST request to /loleaflet/dist/loleaflet.html
- WOPISrc must be in request body as form parameter
- Form targets iframe by name for proper document loading
- Matches WOPI/Collabora standard integration pattern
2026-01-12 16:46:11 +01:00
Leon Bösche
d58137716f
Fix: Collabora proxy should load iframe with WOPISrc in query string, not form submission
...
- Changed from form POST submission to direct iframe load
- WOPISrc goes in Collabora URL query string, not as form parameter
- This matches Collabora's expected request format for WOPI integration
2026-01-12 16:40:35 +01:00
Leon Bösche
18138dde01
Fix: Remove X-Frame-Options header from Collabora proxy to allow iframe loading
...
- The collaboraProxyHandler endpoint is intentionally meant to load in an iframe
- X-Frame-Options: SAMEORIGIN was blocking cross-origin iframe loads
- Removed the header to allow the Flutter web frontend to embed the proxy page
2026-01-12 16:34:05 +01:00
Leon Bösche
6db2bf077d
Fix: Clean up whitespace in document viewer and WOPI handler files
2026-01-12 16:10:40 +01:00
Leon Bösche
42ee3057bf
Fix: Collabora proxy handler - create WOPI session inline instead of calling non-existent function
2026-01-12 16:10:04 +01:00
Leon Bösche
350eb27e30
Clarify Collabora proxy token handling for iframe cross-origin requests
2026-01-12 16:08:35 +01:00
Leon Bösche
dbbad29f2f
Fix: Standardize formatting of WOPICheckFileInfoResponse struct fields
2026-01-12 01:18:32 +01:00
Leon Bösche
ec25f06ea3
Fix: Refactor code for improved readability and consistency in document viewer and signup form
2026-01-12 01:18:08 +01:00
Leon Bösche
36db2daabd
Fix: Clean up wopi.go file completely
2026-01-12 01:17:41 +01:00
Leon Bösche
ff51ef8a71
Fix: Complete WOPI integration - resolve all compilation errors
...
Go backend:
- Clean up corrupted wopi.go file (remove duplicate struct definitions)
- Remove duplicate UpdateFileSize method declaration
Flutter frontend:
- Fix SessionLoaded reference - use default base URL instead
- Replace AppTheme.primary with AppTheme.accentColor
- Remove unused local variables from file_browser_bloc
2026-01-12 01:16:07 +01:00
Leon Bösche
83f0fa0ecb
Fix: Resolve Go and Flutter compilation errors
...
Go backend:
- Fix WOPI models file (remove duplicate package declaration and syntax errors)
- Add GetOrgMember method to database as alias for GetUserMembership
- Add UpdateFileSize method to database
- Remove unused net/url import from wopi_handlers.go
- Fix field names in WOPI struct initializers (match JSON tags)
Flutter frontend:
- Remove webview_flutter import (use simpler placeholder for now)
- Fix _createWOPISession to safely access SessionBloc state
- Replace WebViewController usage with placeholder UI
- Remove unused _generateRandomHex methods from login/signup forms
- Add missing mimeType parameter to DocumentCapabilities in mock repository
- Remove unused local variables in file_browser_bloc
2026-01-12 01:13:40 +01:00
Leon Bösche
1b20fe8b7f
Implement WOPI integration for Collabora Online
...
- Add WOPI models (CheckFileInfoResponse, PutFileResponse, LockInfo)
- Implement WOPI handlers: CheckFileInfo, GetFile, PutFile, Lock operations
- Add file locking mechanism to prevent concurrent editing conflicts
- Add WOPI session endpoint for generating access tokens
- Add UpdateFileSize method to database
- Add WOPI routes (/wopi/files/* endpoints)
- Update Flutter document viewer to load Collabora via WOPI WOPISrc URL
- Implement WebView integration for Collabora Online viewer
- Add comprehensive logging for WOPI operations [WOPI-TOKEN], [WOPI-REQUEST], [WOPI-STORAGE], [WOPI-LOCK]
2026-01-12 01:08:22 +01:00
Leon Bösche
d9c8c1e1f3
STYLE: Refactor code for improved readability and consistency
2026-01-12 00:39:36 +01:00
Leon Bösche
923b0ede86
Multi-format document viewer: add image/text/office file type support
2026-01-12 00:22:12 +01:00
Leon Bösche
80411d9231
FIX: Properly detect if target path is a folder when moving files
2026-01-12 00:09:39 +01:00
Leon Bösche
675c2bf95d
FEATURE: Add user file move endpoint and support both personal and org workspace moves
2026-01-12 00:01:47 +01:00
Leon Bösche
6ffe9aa4df
FIX: Create new file record at destination when moving file
2026-01-11 23:47:14 +01:00
Leon Bösche
1680914017
FIX: Simplify move handler and fix API call
2026-01-11 23:39:15 +01:00
Leon Bösche
60df1a38ff
FIX: Remove unused variables in move handler
2026-01-11 23:32:26 +01:00
Leon Bösche
af5c8f0e72
FIX: Implement WebDAV Move and simplified move file handler
2026-01-11 23:14:45 +01:00
Leon Bösche
0378a0748a
FEATURE: Implement file drag-and-drop move functionality
2026-01-11 23:10:14 +01:00
Leon Bösche
c330381281
FIX: Handle NULL transports array with custom StringArray type
2026-01-11 22:53:24 +01:00
Leon Bösche
6a4cd8c672
FIX: Handle NULL transports in credentials using pq.StringArray
2026-01-11 22:46:49 +01:00
Leon Bösche
17d10e5815
Remove invalid custom HTTP client - use query parameter token for SfPdfViewer
2026-01-11 17:54:01 +01:00
Leon Bösche
ef737429d6
FIX: Use Authorization header for PDF viewer instead of query parameter token
2026-01-11 17:52:08 +01:00
Leon Bösche
2129d72a1f
FIX: Extend JWT token expiration to 24 hours for document viewer sessions
...
- Add GenerateWithDuration method to JWT manager to support custom expiration times
- Update viewerHandler and userViewerHandler to generate viewer-specific tokens with 24-hour expiration
- This fixes the issue where PDF viewer fails due to token expiration within 15 minutes
- Add [VIEWER-SESSION] logging to track viewer session creation
- Tokens now remain valid long enough for users to view, navigate, and interact with PDFs
2026-01-11 17:39:12 +01:00