[Bug]: Deleted ldap account is not listed in disabled users with markRemnantsAsDisabled = 1
Nobody has claimed this yet.
- Dominant language
- PHP
- Stars
- 36.9k
- Forks
- 5.2k
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 713
Description
Bug description
Deleted ldap account is not listed in disabled users with markRemnantsAsDisabled = 1
Steps to reproduce
- Have an LDAP confguration
- Modify the config per cli: occ ldap:set-config s01 markRemnantsAsDisabled 1
- Delete a users on LDAP
- Ensure the user is known as deleted: occ ldap:check-user $USERID
- Open the user management and select "disabled users"
Expected behavior
The user should appear there ;)
Nextcloud Server version
28
Additional info
- Weird implementation of the markRemnantsAsDisabled flag
It's possible to have more than one ldap backend. The above code seems to check if the first ldap connection have the flag set. It should take all backends into account.
Likely resolved by https://github.com/nextcloud/server/pull/46992.
- Wrong enable state for ldap remnants
The controller reads the disable state from the oc_preferences table. That does not take the disabled state for ldap remnants into account.
Apparently the users are returned by the endpoint, but filtered out by the frontend because they have enabled = true. Using $data['enabled'] = $targetUserObject->isEnabled(); makes it work. However there are some menu options, like enable user, that needs to be hidden for ldap remnants.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with apps/user_ldap/lib/User_Proxy.php around the markRemnantsAsDisabled logic and the provisioning API controllers named for stable28 and master. Check how LDAP remnants are represented in the disabled-users response and how the frontend filters their enabled state, including menu actions. Confirm the behavior with the relevant LDAP and provisioning API tests, if present.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- php
- Domain
- api, authentication, backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100