$this->nodes()); LaravelSabre::plugins(fn () => $this->plugins()); } /** * List of nodes for DAV Collection. */ private function nodes(): array { $user = Auth::user(); // Initiate custom backends for link between Sabre and Monica $principalBackend = app(PrincipalBackend::class, ['user' => $user]); $carddavBackend = app(CardDAVBackend::class)->withUser($user); $caldavBackend = app(CalDAVBackend::class)->withUser($user); return [ new PrincipalCollection($principalBackend), new AddressBookRoot($principalBackend, $carddavBackend), new CalendarRoot($principalBackend, $caldavBackend), ]; } /** * List of Sabre plugins. * * @return \Generator<\Sabre\DAV\ServerPlugin> */ private function plugins() { // Authentication backend $authBackend = new AuthBackend; yield new AuthPlugin($authBackend); // CardDAV plugin yield new CardDAVPlugin; yield new VCFExportPlugin; // CalDAV plugin yield new CalDAVPlugin; yield new ICSExportPlugin; // Sync Plugin - rfc6578 yield new SyncPlugin; // ACL plugnin $aclPlugin = new AclPlugin; $aclPlugin->allowUnauthenticatedAccess = false; $aclPlugin->hideNodesFromListings = true; yield $aclPlugin; // In local environment add browser plugin if (App::environment('local')) { yield new BrowserPlugin(false); } else { yield new DAVRedirect; } } }