nextcloud / nextcloud/server

[Bug]: Active Account List Break if 1/3 of Total Accounts are Disabled

Open
#47,114 8 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

0. Needs triage 29-feedback bug feature: users and groups
Dominant language
PHP
Stars
36.9k
Forks
5.2k
Avg merge
2d 3h
Merged PRs (30d)
713

Description

⚠️ This issue respects the following points: ⚠️
Bug description

When a significant number of accounts are disabled, the active account list fails to display correctly (Nextcloud Web interface). The issue seems to occur when approximately one-third of the total accounts are disabled. Resizing the browser window may temporarily resolve the issue, but if there are more than half of the total accounts are disabled, this workaround is ineffective.

image

Steps to reproduce
  1. Create 100 accounts
  2. Disable at least 33 of them
  3. Active accounts displays a total of 67 Accounts, in the list only 17 users are presented
Expected behavior

List all active accounts

Installation method

Community Docker image

Nextcloud Server version

29

Operating system

None

PHP engine version

PHP 8.2

Web server

Apache (supported)

Database engine version

MySQL

Is this bug present after an update or on a fresh install?

Fresh Nextcloud Server install

Are you using the Nextcloud Server Encryption module?

Encryption is Disabled

What user-backends are you using?
  • Default user-backend (database)
  • LDAP/ Active Directory
  • SSO - SAML
  • Other
Configuration report
{
    "system": {
        "htaccess.RewriteBase": "\/",
        "memcache.local": "\\OC\\Memcache\\APCu",
        "apps_paths": [
            {
                "path": "\/var\/www\/html\/apps",
                "url": "\/apps",
                "writable": false
            },
            {
                "path": "\/var\/www\/html\/custom_apps",
                "url": "\/custom_apps",
                "writable": true
            }
        ],
        "activity_expire_days": 90,
        "default_phone_region": "CH",
        "filelocking.enabled": true,
        "preview_max_x": "2048",
        "preview_max_y": "2048",
        "simpleSignUpLink.shown": false,
        "trashbin_retention_obligation": "auto, 30",
        "versions_retention_obligation": "auto, 90",
        "updatechecker": false,
        "jpeg_quality": "60",
        "memcache.distributed": "\\OC\\Memcache\\Redis",
        "memcache.locking": "\\OC\\Memcache\\Redis",
        "redis": {
            "host": "***REMOVED SENSITIVE VALUE***",
            "password": "***REMOVED SENSITIVE VALUE***",
            "port": 6379
        },
        "trusted_proxies": "***REMOVED SENSITIVE VALUE***",
        "upgrade.disable-web": true,
        "passwordsalt": "***REMOVED SENSITIVE VALUE***",
        "secret": "***REMOVED SENSITIVE VALUE***",
        "trusted_domains": [
            "localhost",
            "***REMOVED SENSITIVE VALUE***"
        ],
        "datadirectory": "***REMOVED SENSITIVE VALUE***",
        "dbtype": "mysql",
        "version": "29.0.4.1",
        "overwrite.cli.url": "***REMOVED SENSITIVE VALUE***",
        "dbname": "***REMOVED SENSITIVE VALUE***",
        "dbhost": "***REMOVED SENSITIVE VALUE***",
        "dbport": "",
        "dbtableprefix": "oc_",
        "mysql.utf8mb4": true,
        "dbuser": "***REMOVED SENSITIVE VALUE***",
        "dbpassword": "***REMOVED SENSITIVE VALUE***",
        "installed": true,
        "instanceid": "***REMOVED SENSITIVE VALUE***",
        "mail_domain": "***REMOVED SENSITIVE VALUE***",
        "default_locale": "de_CH",
        "mail_smtpstreamoptions": {
            "ssl": {
                "allow_self_signed": true,
                "verify_peer": false,
                "verify_peer_name": false
            }
        },
        "mail_smtpmode": "smtp",
        "mail_smtphost": "***REMOVED SENSITIVE VALUE***",
        "mail_smtpport": 26,
        "mail_from_address": "***REMOVED SENSITIVE VALUE***",
        "default_language": "de",
        "overwriteprotocol": "https",
        "loglevel": 2,
        "maintenance": false
    }
}
List of activated Apps
Enabled:
  - activity: 2.21.1
  - bruteforcesettings: 2.9.0
  - circles: 29.0.0-dev
  - cloud_federation_api: 1.12.0
  - comments: 1.19.0
  - contactsinteraction: 1.10.0
  - dashboard: 7.9.0
  - dav: 1.30.1
  - federatedfilesharing: 1.19.0
  - federation: 1.19.0
  - files: 2.1.0
  - files_downloadlimit: 2.0.0
  - files_pdfviewer: 2.10.0
  - files_reminders: 1.2.0
  - files_sharing: 1.21.0
  - files_trashbin: 1.19.0
  - files_versions: 1.22.0
  - firstrunwizard: 2.18.0
  - impersonate: 1.16.0
  - lookup_server_connector: 1.17.0
  - nextcloud_announcements: 1.18.0
  - notifications: 2.17.0
  - oauth2: 1.17.0
  - onlyoffice: 9.3.0
  - password_policy: 1.19.0
  - photos: 2.5.0
  - privacy: 1.13.0
  - provisioning_api: 1.19.0
  - recommendations: 2.1.0
  - related_resources: 1.4.0
  - serverinfo: 1.19.0
  - settings: 1.12.0
  - sharebymail: 1.19.0
  - survey_client: 1.17.0
  - systemtags: 1.19.0
  - text: 3.10.1
  - theming: 2.4.0
  - twofactor_backupcodes: 1.18.0
  - user_status: 1.9.0
  - viewer: 2.3.0
  - weather_status: 1.9.0
  - workflowengine: 2.11.0
Disabled:
  - admin_audit: 1.19.0
  - encryption: 2.17.0
  - files_external: 1.21.0
  - logreader: 2.14.0 (installed 2.13.0)
  - support: 1.12.0 (installed 1.11.1)
  - suspicious_login: 7.0.0
  - twofactor_totp: 11.0.0-dev
  - updatenotification: 1.19.1 (installed 1.18.0)
  - user_ldap: 1.20.0
Nextcloud Signing status
No errors have been found.
Nextcloud Logs
Logs don't provide any information when viewing the accounts.
Additional info

Here some scripts to help recreating the scenario.

Create 100 acounts:

#!/bin/bash

# Define the number of users to create
USER_COUNT=100

# Loop to create the users
for i in $(seq -w 1 $USER_COUNT); do
    USERNAME="user$i"
    echo "Creating user: $USERNAME"
    php occ user:add $USERNAME --password-from-env
done

Disable the first 33:

#!/bin/bash

# Define the range of users to disable
START=1
END=33

# Loop to disable the users
for i in $(seq -w $START $END); do
    USERNAME="user0$i"
    echo "Disabling user: $USERNAME"
    php occ user:disable $USERNAME
done

Further Information:

  • Tested with Brave and Safari on MacOS, Firefox on Windows
  • Specific enabled users can still be found when using the search
  • Disabling all optional apps doesn't help

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 by reproducing the issue in the Nextcloud Web active account list using the supplied occ user:add and occ user:disable scripts, then compare the displayed list with the reported account total. Check the browser behavior and search results across the listed browsers; done means all active accounts are displayed after disabling a subset, without relying on window resizing.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, mysql, php
Domain
frontend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.