65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Dav;
 | |
| 
 | |
| use Illuminate\Support\ServiceProvider as BaseServiceProvider;
 | |
| use LaravelSabre\Http\Auth\AuthBackend;
 | |
| use LaravelSabre\LaravelSabre;
 | |
| use Sabre\CardDAV\AddressBookRoot;
 | |
| use Sabre\CardDAV\Plugin as CardDAVPlugin;
 | |
| use Sabre\DAV\Auth\Plugin as AuthPlugin;
 | |
| use Sabre\DAV\Browser\Plugin as BrowserPlugin;
 | |
| use Sabre\DAVACL\AbstractPrincipalCollection;
 | |
| use Sabre\DAVACL\Plugin as AclPlugin;
 | |
| use Sabre\DAVACL\PrincipalCollection;
 | |
| 
 | |
| class ServiceProvider extends BaseServiceProvider
 | |
| {
 | |
|     /**
 | |
|      * Bootstrap any application services.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     public function boot()
 | |
|     {
 | |
|         LaravelSabre::nodes(function () {
 | |
|             return $this->nodes();
 | |
|         });
 | |
|         LaravelSabre::plugins(fn () => $this->plugins());
 | |
|         LaravelSabre::auth(function () {
 | |
|             auth()->onceBasic();
 | |
| 
 | |
|             return true;
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * List of nodes for DAV Collection.
 | |
|      *
 | |
|      * @return array<int, AbstractPrincipalCollection>
 | |
|      */
 | |
|     private function nodes(): array
 | |
|     {
 | |
|         $principalBackend = new Principal();
 | |
|         $addressBookBackend = new AddressBookBackend();
 | |
| 
 | |
|         // Directory tree
 | |
|         return [
 | |
|             new PrincipalCollection($principalBackend),
 | |
|             new AddressBookRoot($principalBackend, $addressBookBackend),
 | |
|         ];
 | |
|     }
 | |
| 
 | |
|     private function plugins(): array
 | |
|     {
 | |
|         $authBackend = new AuthBackend();
 | |
| 
 | |
|         return [
 | |
|             new BrowserPlugin(),
 | |
|             new AuthPlugin($authBackend),
 | |
|             new CardDAVPlugin(),
 | |
|             new AclPlugin(),
 | |
|         ];
 | |
|     }
 | |
| }
 |