55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Http\Controllers;
 | 
						|
 | 
						|
use Illuminate\Support\Facades\Auth;
 | 
						|
use Illuminate\Support\Facades\Log;
 | 
						|
use Illuminate\Support\Facades\DB;
 | 
						|
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;
 | 
						|
use Sabre\CalDAV\CalendarRoot;
 | 
						|
use Sabre\CalDAV\Plugin as CalDavPlugin;
 | 
						|
use Sabre\CalDAV\Backend\PDO as CalDAVPDO;
 | 
						|
use Sabre\CardDAV\AddressBookRoot;
 | 
						|
 | 
						|
class DavController extends Controller
 | 
						|
{
 | 
						|
    public function handle()
 | 
						|
    {
 | 
						|
        // debug
 | 
						|
        \Log::info('SabreDAV DavController');
 | 
						|
 | 
						|
        // get raw pdo from laravel
 | 
						|
        $pdo = DB::connection()->getPdo(); // get raw PDO from Laravel
 | 
						|
 | 
						|
        // setup the backends
 | 
						|
        $authBackend = new LaravelSabreAuthBackend();
 | 
						|
        $principalBackend = new LaravelSabrePrincipalBackend();
 | 
						|
        $calendarBackend = new CalDAVPDO($pdo);
 | 
						|
 | 
						|
        $nodes = [
 | 
						|
            new PrincipalCollection($principalBackend),
 | 
						|
            new CalendarRoot($principalBackend, $calendarBackend)
 | 
						|
            // Add your Calendars or Addressbooks here
 | 
						|
        ];
 | 
						|
 | 
						|
        $server = new DAV\Server($nodes);
 | 
						|
        $server->setBaseUri('/dav/');
 | 
						|
 | 
						|
        $server->addPlugin(new AuthPlugin($authBackend, 'Kithkin DAV'));
 | 
						|
        $server->addPlugin(new ACLPlugin());
 | 
						|
        $server->addPlugin(new CalDavPlugin());
 | 
						|
 | 
						|
        $server->on('beforeMethod', function () {
 | 
						|
            \Log::info('SabreDAV beforeMethod triggered');
 | 
						|
        });
 | 
						|
 | 
						|
        $server->exec();
 | 
						|
        exit;
 | 
						|
    }
 | 
						|
}
 |