monicahq/laravel-sabre

Sabre DAV服务器适配器,用于Laravel。

资助包维护!
asbiin

1.8.0 2024-03-01 23:13 UTC

This package is auto-updated.

Last update: 2024-08-31 00:24:15 UTC


README

Laravel-Sabre是用于在Laravel上使用Sabre.io DAV服务器的适配器。

Latest Version Downloads Workflow Status Quality Gate Coverage Status

安装

您可以使用Composer将此包安装到您的Laravel项目中

composer require monicahq/laravel-sabre

您不需要将此包添加到服务提供者中。

支持

此包支持Laravel 5.6及更高版本,并已在php 7.1及更高版本上进行了测试。

配置

如果您想,可以将包的配置文件发布到config/laravelsabre.php

php artisan vendor:publish --provider="LaravelSabre\LaravelSabreServiceProvider"

如果需要,您可以使用enabled配置选项完全禁用LaravelSabre。

'enabled' => env('LARAVELSABRE_ENABLED', true),

更改path配置以设置Sabre服务器将响应的URL路径。

用法

使用LaravelSabre\LaravelSabre类向Sabre服务器添加节点集合和插件。

在上面的例子中,DAVServiceProvider是一个已添加到config/app.php文件中提供者列表的服务提供者。

节点

LaravelSabre::nodes()用于向Sabre服务器添加节点集合。

它可以是数组,也可以是回调函数,如下面的例子所示

示例

use LaravelSabre\LaravelSabre;
use Sabre\DAVACL\PrincipalCollection;
use Sabre\DAVACL\PrincipalBackend\PDO as PrincipalBackend;

class DAVServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        LaravelSabre::nodes(function () {
            return $this->nodes();
        });
    }

    /**
     * List of nodes for DAV Collection.
     */
    private function nodes() : array
    {
        $principalBackend = new PrincipalBackend();

        return [
            new PrincipalCollection($principalBackend),
        ];
    }
}

插件

您可以使用以下任一方法

  • LaravelSbre::plugins()来定义要添加到Sabre服务器的新的插件数组。它可以是回调函数。
  • 或使用LaravelSbre::plugin()向插件列表添加1个插件。

示例

use LaravelSabre\LaravelSabre;
use LaravelSabre\Http\Auth\AuthBackend;
use Sabre\DAV\Auth\Plugin as AuthPlugin;
use Sabre\CardDAV\Plugin as CardDAVPlugin;

class DAVServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        LaravelSabre::plugins(function () {
            return $this->plugins();
        });
    }

    /**
     * List of Sabre plugins.
     */
    private function plugins()
    {
        // Authentication backend
        $authBackend = new AuthBackend();
        yield new AuthPlugin($authBackend);

        // CardDAV plugin
        yield new CardDAVPlugin();
    }
}

认证

使用带有Authorize::class中间件网关的LaravelSabre::auth()方法,允许某些人根据某些标准访问。

示例

LaravelSabre::auth(function () {
    return auth()->user()->email == 'admin@admin.com';
})

许可证

作者:Alexis Saettler

此项目是MonicaHQ的一部分。

版权所有 © 2019–2022。

MIT许可证下授权。 查看许可证