nextcloud / nextcloud/richdocuments
Secure View blocks WebDAV file download for file owner after upgrade from NC 30.0.14 to 31.0.8
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 453
- Forks
- 147
- Avg merge
- 14h 54m
- Merged PRs (30d)
- 83
Description
Describe the bug
After upgrading from Nextcloud 30.0.14 to 31.0.8, when the Secure View (Hide download) option is enabled for a shared file or folder, the file owner (or a user with full access) cannot download the file via WebDAV. The request returns 403 Forbidden with the message:
Download blocked due the secure view policy
This behavior did not occur in NC 30.0.14.
To Reproduce
Steps to reproduce the behavior:
- Log in to Nextcloud as User A (file owner).
- Share a folder or file with another user or via link.
- Enable Hide download / Secure View for that share.
- From the same owner account (User A), try to download the file via WebDAV:
- GET /remote.php/dav/files//.pdf (Or docx/xlsx or some docs file)
- Observe that the request fails with 403 Forbidden.
Expected behavior
The file owner (or any user with full permissions) should still be able to download their own files via WebDAV, even if Secure View is enabled for a share.
Screenshots
If i disabled the Secure View:
Client details:
- OS: macOS 15.6
- Browser: Chrome
- Version: 139.0.7258.128
- Device: Macbook
Server details
Operating system:
Debian 12
Linux 6.1.0-34-amd64 nextcloud/server#1 SMP PREEMPT_DYNAMIC Debian 6.1.135-1 (2025-04-25) x86_64 GNU/Linux
Web server:
nginx version: nginx/1.22.1
Database:
mariadb Ver 15.1 Distrib 10.11.11-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
PHP version:
PHP 8.2.28
Nextcloud version:
31.0.8
Version of the richdocuments app
Collabora Online - Built-in CODE Server
Version of Collabora Online
25.4.202
Configuration of the richdocuments app
Insert the output of `./occ config:list richdocuments` (or equivalent adapted for your runtime environment)
{
"apps": {
"richdocuments": {
"disable_certificate_verification": "yes",
"doc_format": "ooxml",
"enabled": "yes",
"external_apps": "",
"installed_version": "8.7.3",
"public_wopi_url": "https:\/\/*************",
"types": "filesystem,prevent_group_restriction",
"wopi_url": "https:\/\/*************\/apps\/richdocumentscode\/proxy.php?req="
}
}
}
Logs
Nextcloud log (data/nextcloud.log)
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"Flow activation: rules were requested for operation Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"No flow configurations is going to run Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"Flow activation: rules were requested for operation Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"No flow configurations is going to run Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"Flow activation: rules were requested for operation Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"No flow configurations is going to run Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"Flow activation: rules were requested for operation Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"No flow configurations is going to run Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"Flow activation: rules were requested for operation Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"No flow configurations is going to run Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"Flow activation: rules were requested for operation Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"No flow configurations is going to run Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"Flow activation: rules were requested for operation Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"No flow configurations is going to run Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"Flow activation: rules were requested for operation Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"No flow configurations is going to run Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"Flow activation: rules were requested for operation Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"workflowengine","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"No flow configurations is going to run Block access to a file","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","data":{"app":"workflowengine","level":"0"}}
{"reqId":"ABCDEF1234567890","level":0,"time":"2025-08-18T10:34:03+00:00","remoteAddr":"aaaa:bbbb:cccc:dddd:eeee:ffff:0000:1111","user":"AAAAAA","app":"webdav","method":"GET","url":"/remote.php/dav/files/AAAAAA/Docs/Somepdf.pdf","message":"Download blocked due the secure view policy","userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36","version":"31.0.8.1","exception":{"Exception":"OCA\\DAV\\Connector\\Sabre\\Exception\\Forbidden","Message":"Download blocked due the secure view policy","Code":0,"Trace":[{"file":"/var/www/<domain>/nc/apps/dav/lib/Connector/Sabre/File.php","line":462,"function":"convertToSabreException","class":"OCA\\DAV\\Connector\\Sabre\\File","type":"->"},{"file":"/var/www/<domain>/nc/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":85,"function":"get","class":"OCA\\DAV\\Connector\\Sabre\\File","type":"->"},{"file":"/var/www/<domain>/nc/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpGet","class":"Sabre\\DAV\\CorePlugin","type":"->"},{"file":"/var/www/<domain>/nc/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/<domain>/nc/apps/dav/lib/Connector/Sabre/Server.php","line":49,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/<domain>/nc/apps/dav/lib/Server.php","line":401,"function":"start","class":"OCA\\DAV\\Connector\\Sabre\\Server","type":"->"},{"file":"/var/www/<domain>/nc/apps/dav/appinfo/v2/remote.php","line":21,"function":"exec","class":"OCA\\DAV\\Server","type":"->"},{"file":"/var/www/<domain>/nc/remote.php","line":145,"args":["/var/www/<domain>/nc/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/<domain>/nc/apps/dav/lib/Connector/Sabre/File.php","Line":570,"Previous":{"Exception":"OCP\\Files\\ForbiddenException","Message":"Download blocked due the secure view policy","Code":0,"Trace":[{"file":"/var/www/<domain>/nc/apps/richdocuments/lib/Storage/SecureViewWrapper.php","line":43,"function":"checkFileAccess","class":"OCA\\Richdocuments\\Storage\\SecureViewWrapper","type":"->"},{"file":"/var/www/<domain>/nc/apps/terms_of_service/lib/Filesystem/StorageWrapper.php","line":69,"function":"fopen","class":"OCA\\Richdocuments\\Storage\\SecureViewWrapper","type":"->"},{"file":"/var/www/<domain>/nc/lib/private/Files/View.php","line":1209,"function":"fopen","class":"OCA\\TermsOfService\\Filesystem\\StorageWrapper","type":"->"},{"file":"/var/www/<domain>/nc/lib/private/Files/View.php","line":1037,"function":"basicOperation","class":"OC\\Files\\View","type":"->"},{"file":"/var/www/<domain>/nc/apps/dav/lib/Connector/Sabre/File.php","line":460,"function":"fopen","class":"OC\\Files\\View","type":"->"},{"file":"/var/www/<domain>/nc/3rdparty/sabre/dav/lib/DAV/CorePlugin.php","line":85,"function":"get","class":"OCA\\DAV\\Connector\\Sabre\\File","type":"->"},{"file":"/var/www/<domain>/nc/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"httpGet","class":"Sabre\\DAV\\CorePlugin","type":"->"},{"file":"/var/www/<domain>/nc/3rdparty/sabre/dav/lib/DAV/Server.php","line":472,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/<domain>/nc/apps/dav/lib/Connector/Sabre/Server.php","line":49,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/var/www/<domain>/nc/apps/dav/lib/Server.php","line":401,"function":"start","class":"OCA\\DAV\\Connector\\Sabre\\Server","type":"->"},{"file":"/var/www/<domain>/nc/apps/dav/appinfo/v2/remote.php","line":21,"function":"exec","class":"OCA\\DAV\\Server","type":"->"},{"file":"/var/www/<domain>/nc/remote.php","line":145,"args":["/var/www/<domain>/nc/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/var/www/<domain>/nc/apps/richdocuments/lib/Storage/SecureViewWrapper.php","Line":83},"message":"Download blocked due the secure view policy","exception":{},"CustomMessage":"Download blocked due the secure view policy"}}
Browser log
403 Forbidden
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the GET request at /remote.php/dav/files// with Secure View enabled, then inspect the secure view policy path and the provided Nextcloud logs showing the 403 response. The fix is done when owners or users with full permissions can download through WebDAV while restricted share recipients remain blocked.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- backend, security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100