Skip to content

Sharing folder with federated team throws exception and fails to sync to remote instance #2761

Description

@cristianscheid

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.

When sharing a folder with a federated team that includes members from a remote (federated) instance, the share creation throws an OC\User\NoUserException (Backends provided no user object). As a result, the shared folder does not appear for the remote member under "All files" or "Shared with you" on their instance.

Steps to reproduce

  1. setup a federation environment with two NC instances
  • used haze to setup the environment
  • make sure both instances are up and running and can reach each other
  • on each instance, under "Administration settings > Sharing > Trusted servers":
    • add other instance URL and click +
    • run cron jobs a few times until ✔ appears on left of added URL
  • on each instance, under "Administration settings > Sharing > Federated Teams":
    • toggle "Enable federated teams"
    • enter URL of the current instance (e.g. if you are on instance-one, insert "https://instance-one/")
  • on each instance, run the following command:
occ circles:remote
  • you should see something like:
$ haze haze-maiden-ant occ circles:remote
+-----------------------------------------+----------+---------+--------------------+--------------------+---------+
| Instance                                | Type     | iface   | UID                | Authed             | Aliases |
+-----------------------------------------+----------+---------+--------------------+--------------------+---------+
| noted-trunkfish.haze.127.0.0.1.sslip.io | External | frontal | 9bbe870bcb34c53355 | 9bbe870bcb34c53355 | []      |
+-----------------------------------------+----------+---------+--------------------+--------------------+---------+
$ haze haze-noted-trunkfish occ circles:remote
+------------------------------------+----------+---------+--------------------+--------------------+---------+
| Instance                           | Type     | iface   | UID                | Authed             | Aliases |
+------------------------------------+----------+---------+--------------------+--------------------+---------+
| maiden-ant.haze.127.0.0.1.sslip.io | External | frontal | bb1a701b508ff5facf | bb1a701b508ff5facf | []      |
+------------------------------------+----------+---------+--------------------+--------------------+---------+
  1. create a federated team on instance one
  • as bob, created federated_team
  • under team settings, checked "Allow federated members"
  • added john from instance two
Image
  1. share a folder from instance one with the federated team:
  • as bob, created test_folder and shared it with federated_team
Image
  • sharing with federated_team throws an exception [1]
  • on frontend, no message error is shown, and it shows that the folder is shared with federated_team
Image
  1. check if the shared folder appears on instance two:
  • as john, refreshed the page
  • test_folder does not appear under "All files" or "Shared with you"

Expected behaviour

When sharing test_folder with federated_team, the share should complete without errors, and test_folder should appear for john on instance two, under "Shared with you".

Actual behaviour

Sharing test_folder with federated_team throws an exception [1]. After refreshing the page as john on instance two, test_folder does not appear under "All files" or "Shared with you".

[1] Exception thrown when sharing test_folder with federated_team:

{
    "reqId": "AMwW4by1YjOYMDacHFvE",
    "level": 3,
    "time": "2026-08-14T19:31:12+00:00",
    "remoteAddr": "172.20.0.1",
    "user": "bob",
    "app": "files",
    "method": "POST",
    "url": "/ocs/v2.php/apps/files_sharing/api/v1/shares",
    "scriptName": "/ocs/v2.php",
    "message": "Backends provided no user object for john",
    "userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36",
    "version": "35.0.0.3",
    "exception": {
        "Exception": "OC\\User\\NoUserException",
        "Message": "Backends provided no user object",
        "Code": 0,
        "Trace": [
            {
                "function": "getUserFolder",
                "class": "OC\\Files\\Node\\Root",
                "type": "->",
                "args": [
                    "john"
                ]
            },
            {
                "file": "/var/www/html/lib/private/Files/Node/LazyFolder.php",
                "line": 67,
                "function": "call_user_func_array",
                "args": [
                    [
                        {
                            "__class__": "OC\\Files\\Node\\Root"
                        },
                        "getUserFolder"
                    ],
                    [
                        "john"
                    ]
                ]
            },
            {
                "file": "/var/www/html/lib/private/Files/Node/LazyRoot.php",
                "line": 41,
                "function": "__call",
                "class": "OC\\Files\\Node\\LazyFolder",
                "type": "->",
                "args": [
                    "getUserFolder",
                    [
                        "john"
                    ]
                ]
            },
            {
                "file": "/var/www/html/apps/files_sharing/lib/ShareTargetValidator.php",
                "line": 70,
                "function": "getUserFolder",
                "class": "OC\\Files\\Node\\LazyRoot",
                "type": "->",
                "args": [
                    "john"
                ]
            },
            {
                "file": "/var/www/html/apps/files_sharing/lib/ShareRecipientUpdater.php",
                "line": 77,
                "function": "verifyMountPoint",
                "class": "OCA\\Files_Sharing\\ShareTargetValidator",
                "type": "->",
                "args": [
                    "*** sensitive parameters replaced ***",
                    "*** sensitive parameters replaced ***",
                    {
                        "__class__": "Closure"
                    },
                    [
                        "*** sensitive parameters replaced ***"
                    ]
                ]
            },
            {
                "file": "/var/www/html/apps/files_sharing/lib/Listener/SharesUpdatedListener.php",
                "line": 99,
                "function": "updateForAddedShare",
                "class": "OCA\\Files_Sharing\\ShareRecipientUpdater",
                "type": "->",
                "args": [
                    "*** sensitive parameters replaced ***"
                ]
            },
            {
                "file": "/var/www/html/apps/files_sharing/lib/Listener/SharesUpdatedListener.php",
                "line": 140,
                "function": "{closure:OCA\\Files_Sharing\\Listener\\SharesUpdatedListener::handle():98}",
                "class": "OCA\\Files_Sharing\\Listener\\SharesUpdatedListener",
                "type": "->",
                "args": [
                    "*** sensitive parameters replaced ***"
                ]
            },
            {
                "file": "/var/www/html/apps/files_sharing/lib/Listener/SharesUpdatedListener.php",
                "line": 98,
                "function": "markOrRun",
                "class": "OCA\\Files_Sharing\\Listener\\SharesUpdatedListener",
                "type": "->",
                "args": [
                    "*** sensitive parameters replaced ***",
                    {
                        "__class__": "Closure"
                    }
                ]
            },
            {
                "file": "/var/www/html/lib/private/EventDispatcher/ServiceEventListener.php",
                "line": 57,
                "function": "handle",
                "class": "OCA\\Files_Sharing\\Listener\\SharesUpdatedListener",
                "type": "->",
                "args": [
                    {
                        "__class__": "OCP\\Share\\Events\\ShareCreatedEvent"
                    }
                ]
            },
            {
                "file": "/var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php",
                "line": 206,
                "function": "__invoke",
                "class": "OC\\EventDispatcher\\ServiceEventListener",
                "type": "->",
                "args": [
                    {
                        "__class__": "OCP\\Share\\Events\\ShareCreatedEvent"
                    },
                    "OCP\\Share\\Events\\ShareCreatedEvent",
                    {
                        "__class__": "Symfony\\Component\\EventDispatcher\\EventDispatcher"
                    }
                ]
            },
            {
                "file": "/var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php",
                "line": 56,
                "function": "callListeners",
                "class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
                "type": "->",
                "args": [
                    [
                        {
                            "__class__": "Closure"
                        },
                        {
                            "__class__": "Closure"
                        },
                        {
                            "__class__": "Closure"
                        },
                        {
                            "__class__": "Closure"
                        },
                        {
                            "__class__": "Closure"
                        },
                        "And 3 more entries, set log level to debug to see all entries"
                    ],
                    "OCP\\Share\\Events\\ShareCreatedEvent",
                    {
                        "__class__": "OCP\\Share\\Events\\ShareCreatedEvent"
                    }
                ]
            },
            {
                "file": "/var/www/html/lib/private/EventDispatcher/EventDispatcher.php",
                "line": 74,
                "function": "dispatch",
                "class": "Symfony\\Component\\EventDispatcher\\EventDispatcher",
                "type": "->",
                "args": [
                    {
                        "__class__": "OCP\\Share\\Events\\ShareCreatedEvent"
                    },
                    "OCP\\Share\\Events\\ShareCreatedEvent"
                ]
            },
            {
                "file": "/var/www/html/lib/private/EventDispatcher/EventDispatcher.php",
                "line": 87,
                "function": "dispatch",
                "class": "OC\\EventDispatcher\\EventDispatcher",
                "type": "->",
                "args": [
                    "OCP\\Share\\Events\\ShareCreatedEvent",
                    {
                        "__class__": "OCP\\Share\\Events\\ShareCreatedEvent"
                    }
                ]
            },
            {
                "file": "/var/www/html/lib/private/Share20/Manager.php",
                "line": 1909,
                "function": "dispatchTyped",
                "class": "OC\\EventDispatcher\\EventDispatcher",
                "type": "->",
                "args": [
                    {
                        "__class__": "OCP\\Share\\Events\\ShareCreatedEvent"
                    }
                ]
            },
            {
                "file": "/var/www/html/lib/private/Share20/Manager.php",
                "line": 638,
                "function": "dispatchEvent",
                "class": "OC\\Share20\\Manager",
                "type": "->",
                "args": [
                    {
                        "__class__": "OCP\\Share\\Events\\ShareCreatedEvent"
                    },
                    "share created"
                ]
            },
            {
                "file": "/var/www/html/apps/files_sharing/lib/Controller/ShareAPIController.php",
                "line": 813,
                "function": "createShare",
                "class": "OC\\Share20\\Manager",
                "type": "->",
                "args": [
                    "*** sensitive parameters replaced ***"
                ]
            },
            {
                "file": "/var/www/html/lib/private/AppFramework/Http/Dispatcher.php",
                "line": 172,
                "function": "createShare",
                "class": "OCA\\Files_Sharing\\Controller\\ShareAPIController",
                "type": "->",
                "args": [
                    "*** sensitive parameters replaced ***"
                ]
            },
            {
                "file": "/var/www/html/lib/private/AppFramework/Http/Dispatcher.php",
                "line": 80,
                "function": "executeController",
                "class": "OC\\AppFramework\\Http\\Dispatcher",
                "type": "->",
                "args": [
                    {
                        "__class__": "OCA\\Files_Sharing\\Controller\\ShareAPIController"
                    },
                    "createShare"
                ]
            },
            {
                "file": "/var/www/html/lib/private/AppFramework/App.php",
                "line": 138,
                "function": "dispatch",
                "class": "OC\\AppFramework\\Http\\Dispatcher",
                "type": "->",
                "args": [
                    {
                        "__class__": "OCA\\Files_Sharing\\Controller\\ShareAPIController"
                    },
                    "createShare"
                ]
            },
            {
                "file": "/var/www/html/lib/private/Route/Router.php",
                "line": 324,
                "function": "main",
                "class": "OC\\AppFramework\\App",
                "type": "::",
                "args": [
                    "OCA\\Files_Sharing\\Controller\\ShareAPIController",
                    "createShare",
                    {
                        "__class__": "OC\\AppFramework\\DependencyInjection\\DIContainer"
                    },
                    {
                        "_route": "ocs.files_sharing.shareapi.createshare"
                    }
                ]
            },
            {
                "file": "/var/www/html/ocs/v1.php",
                "line": 78,
                "function": "match",
                "class": "OC\\Route\\Router",
                "type": "->",
                "args": [
                    "/ocsapp/apps/files_sharing/api/v1/shares"
                ]
            },
            {
                "file": "/var/www/html/ocs/v2.php",
                "line": 10,
                "args": [
                    "/var/www/html/ocs/v1.php"
                ],
                "function": "require_once"
            }
        ],
        "File": "/var/www/html/lib/private/Files/Node/Root.php",
        "Line": 325,
        "message": "Backends provided no user object for john",
        "exception": "{\"class\":\"OC\\User\\NoUserException\",\"message\":\"Backends provided no user object\",\"code\":0,\"file\":\"/var/www/html/lib/private/Files/Node/Root.php:325\",\"trace\":\"#0 [internal function]: OC\\Files\\Node\\Root->getUserFolder('john')\\n#1 /var/www/html/lib/private/Files/Node/LazyFolder.php(67): call_user_func_array(Array, Array)\\n#2 /var/www/html/lib/private/Files/Node/LazyRoot.php(41): OC\\Files\\Node\\LazyFolder->__call('getUserFolder', Array)\\n#3 /var/www/html/apps/files_sharing/lib/ShareTargetValidator.php(70): OC\\Files\\Node\\LazyRoot->getUserFolder('john')\\n#4 /var/www/html/apps/files_sharing/lib/ShareRecipientUpdater.php(77): OCA\\Files_Sharing\\ShareTargetValidator->verifyMountPoint(Object(OC\\User\\LazyUser), Object(OC\\Share20\\Share), Object(Closure), Array)\\n#5 /var/www/html/apps/files_sharing/lib/Listener/SharesUpdatedListener.php(99): OCA\\Files_Sharing\\ShareRecipientUpdater->updateForAddedShare(Object(OC\\User\\LazyUser), Object(OC\\Share20\\Share))\\n#6 /var/www/html/apps/files_sharing/lib/Listener/SharesUpdatedListener.php(140): OCA\\Files_Sharing\\Listener\\SharesUpdatedListener->{closure:OCA\\Files_Sharing\\Listener\\SharesUpdatedListener::handle():98}()\\n#7 /var/www/html/apps/files_sharing/lib/Listener/SharesUpdatedListener.php(98): OCA\\Files_Sharing\\Listener\\SharesUpdatedListener->markOrRun(Object(OC\\User\\LazyUser), Object(Closure))\\n#8 /var/www/html/lib/private/EventDispatcher/ServiceEventListener.php(57): OCA\\Files_Sharing\\Listener\\SharesUpdatedListener->handle(Object(OCP\\Share\\Events\\ShareCreatedEvent))\\n#9 /var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php(206): OC\\EventDispatcher\\ServiceEventListener->__invoke(Object(OCP\\Share\\Events\\ShareCreatedEvent), 'OCP\\\\Share\\\\Event...', Object(Symfony\\Component\\EventDispatcher\\EventDispatcher))\\n#10 /var/www/html/3rdparty/symfony/event-dispatcher/EventDispatcher.php(56): Symfony\\Component\\EventDispatcher\\EventDispatcher->callListeners(Array, 'OCP\\\\Share\\\\Event...', Object(OCP\\Share\\Events\\ShareCreatedEvent))\\n#11 /var/www/html/lib/private/EventDispatcher/EventDispatcher.php(74): Symfony\\Component\\EventDispatcher\\EventDispatcher->dispatch(Object(OCP\\Share\\Events\\ShareCreatedEvent), 'OCP\\\\Share\\\\Event...')\\n#12 /var/www/html/lib/private/EventDispatcher/EventDispatcher.php(87): OC\\EventDispatcher\\EventDispatcher->dispatch('OCP\\\\Share\\\\Event...', Object(OCP\\Share\\Events\\ShareCreatedEvent))\\n#13 /var/www/html/lib/private/Share20/Manager.php(1909): OC\\EventDispatcher\\EventDispatcher->dispatchTyped(Object(OCP\\Share\\Events\\ShareCreatedEvent))\\n#14 /var/www/html/lib/private/Share20/Manager.php(638): OC\\Share20\\Manager->dispatchEvent(Object(OCP\\Share\\Events\\ShareCreatedEvent), 'share created')\\n#15 /var/www/html/apps/files_sharing/lib/Controller/ShareAPIController.php(813): OC\\Share20\\Manager->createShare(Object(OC\\Share20\\Share))\\n#16 /var/www/html/lib/private/AppFramework/Http/Dispatcher.php(172): OCA\\Files_Sharing\\Controller\\ShareAPIController->createShare('/test_folder', 31, 7, 'Yys9i5z2ymPiurC...', NULL, '', NULL, '', '', '', '[{\\\"value\\\":true,...', NULL)\\n#17 /var/www/html/lib/private/AppFramework/Http/Dispatcher.php(80): OC\\AppFramework\\Http\\Dispatcher->executeController(Object(OCA\\Files_Sharing\\Controller\\ShareAPIController), 'createShare')\\n#18 /var/www/html/lib/private/AppFramework/App.php(138): OC\\AppFramework\\Http\\Dispatcher->dispatch(Object(OCA\\Files_Sharing\\Controller\\ShareAPIController), 'createShare')\\n#19 /var/www/html/lib/private/Route/Router.php(324): OC\\AppFramework\\App::main('OCA\\\\Files_Shari...', 'createShare', Object(OC\\AppFramework\\DependencyInjection\\DIContainer), Array)\\n#20 /var/www/html/ocs/v1.php(78): OC\\Route\\Router->match('/ocsapp/apps/fi...')\\n#21 /var/www/html/ocs/v2.php(10): require_once('/var/www/html/o...')\\n#22 {main}\"}",
        "CustomMessage": "Backends provided no user object for john"
    }
}

Server configuration

Web server: Apache/Nginx

Database: MySQL/Maria/SQLite/PostgreSQL

PHP version: 8.5/8.4/8.3

Nextcloud version: Nextcloud 35.0.0 beta 2

List of activated apps
Enabled:
  - appstore: 2.0.0-dev.0
  - circles: 35.0.0-dev.1
  - cloud_federation_api: 2.0.0-dev.0
  - comments: 2.0.0-dev.0
  - contacts: 8.7.6
  - contactsinteraction: 2.0.0-dev.0
  - dashboard: 8.0.0-dev.0
  - dav: 2.0.0-dev.1
  - federatedfilesharing: 2.0.0-dev.1
  - federation: 2.0.0-dev.0
  - files: 3.0.0-dev.0
  - files_reminders: 2.0.0-dev.0
  - files_sharing: 2.0.0-dev.1
  - files_trashbin: 2.0.0-dev.0
  - files_versions: 2.0.0-dev.0
  - lookup_server_connector: 2.0.0-dev.0
  - oauth2: 2.0.0-dev.0
  - profile: 2.0.0-dev.0
  - provisioning_api: 2.0.0-dev.0
  - settings: 2.0.0-dev.0
  - sharebymail: 2.0.0-dev.0
  - sharing: 1.0.0
  - systemtags: 2.0.0-dev.0
  - theming: 3.0.0-dev.0
  - twofactor_backupcodes: 2.0.0-dev.0
  - updatenotification: 2.0.0-dev.0
  - user_status: 2.0.0-dev.0
  - weather_status: 2.0.0-dev.0
  - webhook_listeners: 2.0.0-dev.0
  - workflowengine: 3.0.0-dev.0
Disabled:
  - admin_audit: 2.0.0-dev.0
  - encryption: 3.0.0-dev.0
  - files_external: 2.0.0-dev.0
  - testing: 2.0.0-dev.0
  - user_ldap: 2.0.0-dev.0
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

Browser

Browser name: Firefox/Chrome/Safari/…

Browser version: 124/125/…

Operating system: Windows/Ubuntu/Mac/…

Browser log
Insert your browser log here, this could for example include:
a) The javascript console log
b) The network log
c) ...

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions