diff options
author | Daniel Kesselberg <mail@danielkesselberg.de> | 2022-06-02 15:09:41 +0200 |
---|---|---|
committer | backportbot-nextcloud[bot] <backportbot-nextcloud[bot]@users.noreply.github.com> | 2022-07-19 08:25:54 +0000 |
commit | fabbbea49aa43669a63a3d12645243a0bcd616e4 (patch) | |
tree | e12306a45a4b02dd2907b77dbd0da73e660eddbf | |
parent | 6d7483c9e0f9c19ec1d12626c0272ce78354a118 (diff) |
Encode group names for x-property-replace header
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
-rw-r--r-- | lib/Dav/PatchPlugin.php | 12 | ||||
-rw-r--r-- | src/services/appendContactToGroup.js | 2 |
2 files changed, 9 insertions, 5 deletions
diff --git a/lib/Dav/PatchPlugin.php b/lib/Dav/PatchPlugin.php index 9f4f9d1f..e051ec92 100644 --- a/lib/Dav/PatchPlugin.php +++ b/lib/Dav/PatchPlugin.php @@ -28,8 +28,6 @@ namespace OCA\Contacts\Dav; use Sabre\CardDAV\Card; use Sabre\DAV; -use Sabre\DAV\INode; -use Sabre\DAV\PropPatch; use Sabre\DAV\Server; use Sabre\DAV\ServerPlugin; use Sabre\HTTP\RequestInterface; @@ -85,9 +83,13 @@ class PatchPlugin extends ServerPlugin { /** * Adds all CardDAV-specific properties * - * @param PropPatch $propPatch - * @param INode $node + * @param RequestInterface $request + * @param ResponseInterface $response * @return bool + * @throws DAV\Exception\BadRequest + * @throws DAV\Exception\NotAuthenticated + * @throws DAV\Exception\NotFound + * @throws \Sabre\DAVACL\Exception\NeedPrivileges */ public function httpPatch(RequestInterface $request, ResponseInterface $response): bool { $path = $request->getPath(); @@ -119,6 +121,8 @@ class PatchPlugin extends ServerPlugin { } } + $propertyData = rawurldecode($propertyData); + // Init contact $vCard = Reader::read($node->get()); $properties = $vCard->select($propertyName); diff --git a/src/services/appendContactToGroup.js b/src/services/appendContactToGroup.js index 6e520426..cfdd5567 100644 --- a/src/services/appendContactToGroup.js +++ b/src/services/appendContactToGroup.js @@ -34,7 +34,7 @@ const appendContactToGroup = async function(contact, groupName) { return axios.patch(contact.url, {}, { headers: { 'X-PROPERTY': 'CATEGORIES', - 'X-PROPERTY-REPLACE': groups.join(','), + 'X-PROPERTY-REPLACE': groups.map(groupName => encodeURIComponent(groupName)).join(','), }, }) } |