musonic/sabre-accounts

SabreDAV 库的插件

dev-master 2013-04-25 13:00 UTC

This package is not auto-updated.

Last update: 2024-09-23 11:32:45 UTC


README

SabreDAV 的账户插件,适用于 PHP 的 WebDAV 框架。此插件允许通过 HTTP 请求远程创建用户和主体。如果您不确定它们之间的区别,请查看以下链接: http://tools.ietf.org/html/rfc3744#section-2

要求

此插件需要 SabreDAV 版本 1.8 或更高版本。

假设您已经按照以下链接中的说明在数据库中设置了一个用户表:https://code.google.com/p/sabredav/wiki/CalDAV#Database_setup

安装

要安装此插件,请确保您已按照 composer 安装说明安装了 SabreDAV。要添加此插件,只需将以下行添加到您的 composer 文件中的 requires 部分

"musonic/sabre-accounts" : "dev-master"

添加后,只需运行 composer update 即可完成安装。

  1. 手动将一个 'super_user' 添加到您的用户表中。此用户是唯一有权向数据库中添加新用户的用户。

  2. 更新您的 server.php 文件(或您所命名的任何文件)

$accountsBackend = new \SabreAccounts\DAV\Accounts\Backend\PDO($pdo);
$account = new \SabreAccounts\DAV\Accounts\Plugin($accountsBackend);
$account->set_superuser('your_super_user');
$server->addPlugin($account);   

使用方法

创建用户

该插件通过向服务器发送包含自定义头和一个非常简单的 JSON 体的 HTTP POST 请求来工作。请求必须包含以下内容

  1. Content-Type 头为 application/json
  2. JSON 格式的请求体,简单地包含要添加的用户名和以 digesta1 格式加密的密码。例如。
$body = json_encode(array('username'=>$username, 'digesta1'=>$password));

创建主体

  1. 更新您的 server.php 文件以使用正确的主体后端
$principalsBackend = new \SabreAccounts\DAVACL\PrincipalBackend\MusonicPDO(
    $pdo, 
    $principalsTable,
    $groupMembersTableName      
);
  1. 更新您的文档树,使主体集合成为 SabreAccounts\CalDAV\Principal\MusonicCollection 的实例
  2. 要创建一个新的主体,您需要发送一个 MKCOL 请求。请求体可能如下所示
    <?xml version="1.0" encoding="utf-8" ?>
            <D:mkcol xmlns:D="DAV:" xmlns:S="http://sabredav.org/ns">
                <D:set>
                    <D:prop>
                        <D:resourcetype>
                            <D:collection/>
                            <D:principal/>
                        </D:resourcetype>
                        <D:displayname>Joe Bloggs</D:displayname>
                        <S:email-address>joebloggs@example.com</S:email-address>
                    </D:prop>
                </D:set>
            </D:mkcol>

请记住,您必须向您正在创建的主体发送请求。即 /principals/newprincipal,而不是只发送到 /principals/