nextcloud / nextcloud/deck

[bug] Webhook events do not serialize `labels` in mongo filters

Open
#8,245 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

1. to develop bug
Dominant language
JavaScript
Stars
1.4k
Forks
354
Avg merge
1d 10h
Merged PRs (30d)
43

Description

How to use GitHub
  • Please use the 👍 reaction to show that you are affected by the same issue.
  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
  • Subscribe to receive notifications on status change and new comments.

Describe the bug
When a webhook is registered and filters on a dot-notation query for a label attribute, the query fails because the labels are not serialized properly.

To Reproduce

  1. Register the following webhook:
{
    "httpMethod": "POST",
    "uri": "https://<INSERT TRUSTED WEBHOOK LOCATION>",
    "event": "OCA\\Deck\\Event\\CardUpdatedEvent",
    "eventFilter": {
        "event.card.labels.title": "foo"
    },
    "authMethod": null,
    "authData": null,
    "tokenNeeded": null
}
  1. Create a card and assign it a label.

  2. Monitor logs for the following error:

OCA\WebhookListeners\Service\PHPMongoQuery::_executeOperatorOnElement(): Argument #4 ($document) must be of type array, OCA\Deck\Db\Label given, called in /config/www/nextcloud/apps/webhook_listeners/lib/Service/PHPMongoQuery.php on line 220 in file '/config/www/nextcloud/apps/webhook_listeners/lib/Service/PHPMongoQuery.php' line 198

Expected behavior
The webhook should be able to filter on the label attributes.

Screenshots
N/A

Client details:

  • OS: macOS 26
  • Browser: Firefox
  • Version: 153.0.3
  • Device: macbook pro m2
Server details

Operating system:
container

Web server:
nginx

Database:
postgres 18

PHP version:
8.4.16

Nextcloud version: (see Nextcloud admin page)
34.0.2

Where did you install Nextcloud from:
container

Signing status:

Login as admin user into your Nextcloud and access
http://example.com/index.php/settings/integrity/failed
paste the results here.

List of activated apps:

If you have access to your command line run e.g.:
sudo -u www-data php occ app:list
from within your Nextcloud installation folder

Nextcloud configuration:

If you have access to your command line run e.g.:
sudo -u www-data php occ config:list system
from within your Nextcloud installation folder

or

Insert your config.php content here
Make sure to remove all sensitive content such as passwords. (e.g. database password, passwordsalt, secret, smtp password, …)

Are you using an external user-backend, if yes which one: LDAP/ActiveDirectory/Webdav/...

Logs
Nextcloud log (data/nextcloud.log)
Insert your Nextcloud log here
Browser log
Insert your browser log here, this could for example include:

a) The javascript console log
b) The network log
c) ...

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in apps/webhook_listeners/lib/Service/PHPMongoQuery.php, especially the call around line 220 and _executeOperatorOnElement() around line 198. Reproduce the Deck CardUpdatedEvent webhook with a dot-notation filter on event.card.labels.title, then verify that label attributes serialize correctly and filtering no longer raises the reported type error.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
api, backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
64/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.