47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Http\Controllers;
 | 
						|
 | 
						|
use Illuminate\Support\Facades\Auth;
 | 
						|
use Illuminate\Support\Facades\Log;
 | 
						|
use App\Services\Dav\LaravelSabreAuthBackend;
 | 
						|
use App\Services\Dav\LaravelSabrePrincipalBackend;
 | 
						|
use Sabre\DAV;
 | 
						|
use Sabre\DAV\Auth\Plugin as AuthPlugin;
 | 
						|
use Sabre\DAVACL\Plugin as ACLPlugin;
 | 
						|
use Sabre\DAVACL\PrincipalCollection;
 | 
						|
 | 
						|
class DavController extends Controller
 | 
						|
{
 | 
						|
    public function handle()
 | 
						|
    {
 | 
						|
        $authBackend = new LaravelSabreAuthBackend();
 | 
						|
        $principalBackend = new LaravelSabrePrincipalBackend();
 | 
						|
        \Log::info('SabreDAV DavController');
 | 
						|
 | 
						|
        $nodes = [
 | 
						|
            new PrincipalCollection($principalBackend),
 | 
						|
            // Add your Calendars or Addressbooks here
 | 
						|
        ];
 | 
						|
 | 
						|
        $server = new DAV\Server($nodes);
 | 
						|
        $server->setBaseUri('/dav/');
 | 
						|
 | 
						|
        $server->addPlugin(new AuthPlugin($authBackend, 'WebDAV'));
 | 
						|
        $server->addPlugin(new ACLPlugin());
 | 
						|
 | 
						|
        $server->on('beforeMethod', function () {
 | 
						|
            \Log::info('SabreDAV beforeMethod triggered');
 | 
						|
        });
 | 
						|
 | 
						|
        ob_start();
 | 
						|
        $server->exec();
 | 
						|
 | 
						|
        $status = $server->httpResponse->getStatus();
 | 
						|
        $content = ob_get_contents();
 | 
						|
        ob_end_clean();
 | 
						|
        $server->exec();
 | 
						|
        exit;
 | 
						|
    }
 | 
						|
}
 |