n3xt0r/laravel-webdav-server
A Laravel package that brings a WebDAV server to your application, letting you expose files and storage over the WebDAV protocol for seamless sync and access from desktop and mobile clients.
/docs setup steps (also at https://laravel-webdav-server.readthedocs.io/en/latest/). Publish the package config before anything else — the config defines your spaces, so almost everything downstream depends on it being correct.User). The documented path shape is {root}/{prefix}/{principal.id} — verify what that resolves to with the WebDavPath facade before pointing a client at it.OPTIONS handling are correct.PathResolverService (what path the package thinks it is serving),Gate policies (authorization happens there, not in the package),prefix convention consistent so PathResolverService output stays predictable.WebDavPath outside the request pipeline. Generate mount URLs for a UI ("Open in Finder / Connect to Server" instructions), build storage paths in Artisan commands, jobs and notifications, or assert paths in tests. It removes the temptation to string-concatenate {root}/{prefix}/{id} yourself.throttle, request logging, IP allow-listing) — the route shape is stable, so this is safe to do. Keep WebDAV routes out of web middleware that assumes sessions/CSRF.-X PROPFIND, -X OPTIONS, and Basic auth for fast regression checks on 207 Multi-Status and headers; use Finder/Explorer/WinSCP/Cyberduck for the periodic sanity check the release notes promise compatibility with.VerifyCsrfToken or session-dependent middleware; stick to stateless auth.PROPFINDs. A PROPFIND on a directory can hit your Gate for every child node. Watch query counts on big folders and keep policies cheap (avoid lazy-loading relations per check)..DS_Store, ._*, Thumbs.db and desktop.ini. Expect your audit/sync listeners to see them and filter deliberately.PathResolverService/WebDavPath rather than comparing raw request strings.config:cache. Changing spaces, prefix or plugins in config requires a cache clear/re-cache in deployed environments; a stale cache here looks exactly like a routing bug.How can I help you explore Laravel packages today?