Commit graph

1365 commits

Author SHA1 Message Date
Côme Chilliet
30ba835e90
fix(user_ldap): Escape filter part when searching for group members
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-16 10:07:17 +02:00
Côme Chilliet
b37044d484
chore: Fix psalm issues following strong typing of IUser
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-11 09:45:32 +02:00
Benjamin Gaussorgues
2b7415ef4d
Merge pull request #60960 from nextcloud/carl/querybuilder-magic-number
Some checks are pending
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, main, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, guests_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / changes (push) Waiting to run
Psalm static code analysis / static-code-analysis (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-security (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-ocp (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-ncu (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-strict (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-summary (push) Blocked by required conditions
refactor: Use new IQueryBuilder::MAX_IN_PARAMETERS
2026-06-10 23:09:30 +02:00
Anna Larch
bbf05d3b8f fix(user_ldap): allow editing profile fields not managed by LDAP
canEditProperty() was returning true (editable) when an LDAP attribute
was configured for a field, and false when no attribute was configured.
This is inverted: a field with an LDAP attribute mapping is owned by
LDAP and should not be user-editable, while a field with no mapping is
not sourced from LDAP and the user should be free to set it themselves.

Fixes profile fields being uneditable for all LDAP users whose admin
has not configured attribute mappings for those fields.

Assisted-by: ClaudeCode:claude-sonnet-4-6
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-06-04 12:07:10 +02:00
Anna Larch
967d8de792 perf(user_ldap): chunk oracle queries for lower bind cost
Oracle's OCI8 driver binds each named parameter individually via
OCIBindByName, making queries with 65 000 parameters dramatically
slower than on MySQL or PostgreSQL — slow enough to time out in CI
and degrade production LDAP syncs on large installations.

Lower maxSlices to 5 for Oracle (5 000 params/query) via a match
expression alongside the existing SQLite special-case. SQLite and
all other databases are unchanged.

Assisted-by: ClaudeCode:claude-sonnet-4-6
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-06-04 10:33:42 +02:00
Carl Schwan
994565fec7
refactor: Use new IQueryBuilder::MAX_IN_PARAMETERS
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-06-03 13:45:29 +02:00
Côme Chilliet
84ba78fe6d
fix(user_ldap): Move accesses to AccessFactory instead of static var
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-02 09:46:19 +02:00
Côme Chilliet
68f417b354
chore(user_ldap): Move static var to static property and silence warning
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-02 09:46:19 +02:00
Côme Chilliet
0887810eb9
fix: Use a CappedMemoryCache instead of an array to cache stuff in user_ldap
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-02 09:46:18 +02:00
Côme Chilliet
18dddbc3b5
fix: Remove static var is Access class
It’s actually more correct to cache this per-instance.
What’s less clear is whether this can always fit in memory.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-02 09:46:18 +02:00
Côme Chilliet
1ab09ec753
chore: Apply new coding standard to all files
The diff can be checked using: git diff --ignore-all-space --ignore-blank-lines
To see only the changes not related to blank lines.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-01 13:46:39 +02:00
Carl Schwan
acceeb6dff
feat(ldap): Allow to search one user by one of its LDAP attribute
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-05-11 12:41:00 +02:00
Côme Chilliet
7bd0050564
feat(user_ldap): Add a limit and offset options for check-user --all-seen-users
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-04-30 14:44:20 +02:00
Côme Chilliet
0bcf760ac1
feat(user_ldap): Add option to check all seen users
This can be useful in some situations to sync all seen users with --update

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-04-30 14:37:13 +02:00
Ferdinand Thiessen
d8e8703796
chore: add missing Override attribute to app code
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-04-28 21:29:28 +02:00
Marcel Klehr
580ba0c689 fix: Change the setting name
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-04-14 10:49:15 +02:00
Marcel Klehr
63195fbf33 feat(user_ldap): Add config for partial search compatibility with ActiveDirectory
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-04-14 10:49:15 +02:00
Côme Chilliet
c20fcccfa6
Merge pull request #59379 from nextcloud/fix/clean-ldap-ocp-typing
fix: Fix typing in LDAP provider public interfaces
2026-04-07 10:52:36 +02:00
hamid
b7d6822592 fix(user_ldap): fix lastLogin reading wrong appid and configkey
fetchDetails() was calling getValueInt($uid, 'user_ldap', 'email')
instead of getValueInt($uid, 'login', 'lastLogin'), causing lastLogin
to always return 0 for offline LDAP users.

Fixes #58421

Signed-off-by: hamid <hamid@webpick.net>
2026-04-03 13:06:49 +01:00
Côme Chilliet
99a8e6c3c4
fix: Fix typing in LDAP provider public interfaces
Remove obsolete `resource` typing for ldap with PHP>=8.1.
Add proper attributes.
Add strong typing.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-04-01 14:36:40 +02:00
Côme Chilliet
c88a1d3961
fix: Remove static vars usage in user_ldap
There are still some left, harder to remove.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-23 16:48:31 +01:00
Côme Chilliet
1398c598cf
fix: Remove static vars from user_ldap
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-23 16:34:01 +01:00
Arthur Schiwon
0ace547307
fix(LDAP): do not use count() inside a loop
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2026-03-18 11:34:35 +01:00
Arthur Schiwon
1c01895796
fix(LDAP): use displayname from DB, before reaching out to LDAP
As we do it with other information of the user, we now use the known value
of a users displayname, and leave the updating to the background job. This
improves performance of user facing actions where the display name is
required and reduces queries to the LDAP server that are typically more
expensive.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2026-03-18 11:34:35 +01:00
Côme Chilliet
77b0d6cbbc
fix: Add missing Attribute and fix parameter type in renewpassword route
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-17 16:58:34 +01:00
Côme Chilliet
8aedcb4a82
Merge pull request #58652 from nextcloud/automated/noid/rector-changes
Apply rector changes
2026-03-05 16:03:50 +01:00
Côme Chilliet
279d5c226e
chore(user_ldap): Adapt code to LDAP constructor change, remove dead code
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-03-02 16:34:04 +01:00
nextcloud-command
663018455e refactor: Apply rector changes
Signed-off-by: GitHub <noreply@github.com>
2026-03-01 14:43:11 +00:00
Côme Chilliet
60c86848e4
fix: Use proper DI for LDAP class
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-02-26 15:21:40 +01:00
Côme Chilliet
c6f56ddbd7
fix(user_ldap): Remove usages of deprecated IServerContainer
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-02-26 13:31:26 +01:00
provokateurin
f12cecb684
feat(rector): Enable SafeDeclareStrictTypesRector
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-02-09 10:59:31 +01:00
Carl Schwan
65e769a861
refactor: Apply comments
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2026-02-06 13:50:46 +01:00
Carl Schwan
5d0d0c17e5
chore(rector): Run rector on apps, core and tests directory
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2026-02-06 13:23:23 +01:00
Côme Chilliet
af760d174f
feat: Implement new interface in LDAP user backend to reflect permissions
This will prevent users from editing profile fields if those are
 configured to be sync from LDAP.
I did not include the avatar in this because it has a special handling.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-02-03 10:22:26 +01:00
Côme Chilliet
f2a5a8d70e
fix(user_ldap): Fix crash in some code path when a DN is longer that 64
UserConfig throws in this case.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-01-27 14:05:53 +01:00
Côme Chilliet
c1dd559965
fix: Use strict array comparisons in user_ldap
Otherwise there are issues with string values looking like numbers.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-01-13 11:46:57 +01:00
Ferdinand Thiessen
29e31ffdb1
refactor(user_ldap): migrate jQuery UI of password renewal to Vue
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-12 21:48:13 +01:00
Marcel Müller
f870041943 fix: Make User_Proxy IGetDisplayNameBackend complient
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2026-01-09 18:31:55 +01:00
Carl Schwan
1661855f5b
refactor: Make some code a bit more correct
- Use PHP_FLOAT_EPSILON for float comparaison
- Simplify some getValueBool code

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-11 13:27:50 +01:00
Carl Schwan
2ae9626fec
refactor(user_ldap): Port most of the remaining deprecated IConfig usage
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-11 13:27:48 +01:00
Carl Schwan
14daf4ca16
refactor(user_ldap): Port User\User to IUserConfig
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-11 13:27:48 +01:00
Louis Chmn
291ec1e474 fix(user_ldap): Fix activation enforcement when testing the config
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-12-04 17:16:21 +00:00
Côme Chilliet
7eefd725db fix(user_ldap): Do not use variables directly in translation strings
I simply removed translations for exceptions which are never supposed to
 happen apart from API misuse or code bug.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-12-01 10:40:50 +01:00
Louis Chmn
1e17a9fe7a refactor(user_ldap): Migrate to Vue3
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-11-25 13:36:23 +01:00
Côme Chilliet
c62166241a chore(user_ldap): Remove ajax endpoints
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-11-21 14:23:58 +01:00
Côme Chilliet
28cef3ed6b fix(ldap): Add OCS route for clearing mapping without using ajax
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-11-21 14:23:58 +01:00
Côme Chilliet
c414a7bdf8 fix: Fix documentation for controllers and update openapi.json
Also removed save action from WizardController as there is already a
 route in ConfigApiController to save a configuration.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-11-21 14:23:57 +01:00
Côme Chilliet
ac078b6e68 chore: Fix typing in WizardResult
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-11-21 14:23:57 +01:00
Côme Chilliet
9d41d8172b fix(ldap): Fix wizard controller action route
It seems naming a route parameter $action causes issue, so renamed it to
 $wizardAction.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-11-21 14:23:57 +01:00
Côme Chilliet
a0e5548e49 feat(user_ldap): Add a wizard OCS API
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-11-21 14:23:57 +01:00