n3xt0r / laravel-webdav-server-filament
Filament admin panel integration for the Laravel WebDAV Server package.
Package info
github.com/N3XT0R/laravel-webdav-server-filament
pkg:composer/n3xt0r/laravel-webdav-server-filament
Fund package maintenance!
Requires
- php: ^8.4
- filament/filament: ^5.0
- n3xt0r/laravel-webdav-server: ^1.0
- spatie/laravel-package-tools: ^1.15.0
Requires (Dev)
- laravel/boost: ^2.4
- laravel/pint: ^1.0
- nunomaduro/collision: ^8.0
- orchestra/testbench: ^9.0|^10.0
- pestphp/pest: ^3.7|^4.0
- pestphp/pest-plugin-arch: ^3.0|^4.0
- pestphp/pest-plugin-laravel: ^3.0|^4.0
- pestphp/pest-plugin-livewire: ^3.0|^4.0
- spatie/laravel-ray: ^1.26
Suggests
- mmes-design/filament-file-manager: Free file manager plugin for Filament — browse, upload, and manage files on WebDAV storage disks directly from the admin panel.
This package is auto-updated.
Last update: 2026-05-08 19:16:16 UTC
README
Official Filament plugin for n3xt0r/laravel-webdav-server.
Adds WebDAV account management to any Filament panel — for administrators managing accounts on behalf of users, and optionally for users managing their own accounts directly.
Requirements
| Dependency | Version |
|---|---|
| PHP | 8.4+ |
| Laravel | 12+ |
| Filament | 5+ |
n3xt0r/laravel-webdav-server |
compatible release |
Installation
composer require n3xt0r/laravel-webdav-server-filament
Publish the configuration when you need to change defaults:
php artisan vendor:publish --provider="N3XT0R\LaravelWebdavServerFilament\LaravelWebdavServerFilamentServiceProvider"
Plugin Registration
Register the plugin on any Filament panel:
use N3XT0R\LaravelWebdavServerFilament\LaravelWebdavServerFilamentPlugin; $panel->plugin(LaravelWebdavServerFilamentPlugin::make());
Resources
Admin Resource
The admin-facing resource is registered by default and gives administrators full control over all WebDAV accounts:
- create accounts and link them to an application user; the linked user cannot be changed after creation
- edit username, display name, password, enabled state, and optional metadata key-value pairs
- reset passwords via a dedicated action in the table and edit page header, with optional notification delivery to the linked user
- view a read-only, copyable WebDAV URL on the account view page
- bulk enable, bulk disable, or bulk delete accounts from the list
To disable it on a panel:
LaravelWebdavServerFilamentPlugin::make() ->withoutAdminAccountResource();
User Resource (self-service)
The user-facing resource is disabled by default. When enabled, it lets authenticated users manage their own WebDAV accounts directly without admin involvement.
Enable it for all authenticated users:
LaravelWebdavServerFilamentPlugin::make() ->withUserAccountResource();
Enable it conditionally — for example, only for users with a verified e-mail address:
LaravelWebdavServerFilamentPlugin::make() ->userAccountResourceEnabledUsing( fn (User $user): bool => $user->hasVerifiedEmail() );
The user resource:
- scopes all queries to the authenticated user's own accounts — other users' accounts are never visible
- create, edit, view, and delete own accounts; password changes go through the edit form
- does not expose a user select field —
user_idis set automatically to the authenticated user on creation - does not include bulk enable/disable — only bulk delete is available
- enforces access at page mount level, independent of
canAccess(), so it is compatible with Filament Shield and other authorization packages
Plugin API
| Method | Description |
|---|---|
withoutAdminAccountResource() |
Disable the admin-facing resource on this panel |
withUserAccountResource() |
Enable the user-facing self-service resource for all authenticated users |
userAccountResourceEnabledUsing(callable $fn) |
Enable the user-facing resource conditionally via callback |
userSelectUsing(callable $fn) |
Customize the user select field in the admin resource |
Customization
User Select Field
The admin resource includes a searchable user select field by default. Replace it with your own configuration by passing
a callback that receives and returns the Select component:
use Filament\Forms\Components\Select; use App\Models\User; LaravelWebdavServerFilamentPlugin::make() ->userSelectUsing(function (Select $select): Select { return $select ->options(User::active()->pluck('name', 'id')) ->searchable(); });
Notifications
Notifications are enabled by default for account creation and password reset.
Disable globally in config/laravel-webdav-server-filament.php:
'notifications' => [ 'enabled' => false, ],
Lifecycle Events
The package dispatches events for every account lifecycle action:
use N3XT0R\LaravelWebdavServerFilament\Events\WebDavAccountCreatedEvent; use N3XT0R\LaravelWebdavServerFilament\Events\WebDavAccountUpdatedEvent; use N3XT0R\LaravelWebdavServerFilament\Events\WebDavAccountDeletedEvent; // Listen to a specific lifecycle action Event::listen(WebDavAccountCreatedEvent::class, function (WebDavAccountCreatedEvent $event): void { // $event->record is the created WebDavAccountModel }); // Or listen to the base event for all lifecycle actions use N3XT0R\LaravelWebdavServerFilament\Events\WebDavAccountEvent; Event::listen(WebDavAccountEvent::class, function (WebDavAccountEvent $event): void { logger()->info('webdav.account.' . $event->action, ['id' => $event->record->getKey()]); });
Documentation
Full documentation: https://laravel-webdav-server-filament.readthedocs.io/en/latest/
Also available locally in the docs/ directory:
Core Package
This package is a companion to the core WebDAV server:
👉 https://github.com/N3XT0R/laravel-webdav-server
Core package documentation:
👉 https://laravel-webdav-server.readthedocs.io/en/latest/
License
MIT License