Our use case is that we want to disable users who are no longer in LDAP. We additionally have users in phabricator that aren't in LDAP (such as bots, mailing list users, etc.). Ideally we'd be able to "find all non-disabled human users" to be able to be able to compare it with a canonical source of information.
Description
Revisions and Commits
Status | Assigned | Task | ||
---|---|---|---|---|
Resolved | epriestley | T10512 Implement `user.search` Conduit API method | ||
Resolved | epriestley | T5873 Update Conduit for ApplicationTransactions, CustomFields and Edges | ||
Resolved | epriestley | T9132 Build an ApplicationEditor abstraction | ||
Resolved | epriestley | T5752 Navigation menus should work correctly on mobile by default | ||
Resolved | chad | T8099 Mid-2015 Phabricator Redesign | ||
Resolved | chad | T8338 Unable to re-arrange Maniphest tasks into 1st row when dragging (redesign branch) | ||
Resolved | chad | T8339 Allow setting of icons in maniphest.status | ||
Resolved | chad | T8341 Identify anywhere we didn't use icons where barColor was used | ||
Resolved | chad | T8342 Design a new PHUIPagerView, allow setting to objects | ||
Resolved | chad | T8549 Feedback on 2015 Redesign | ||
Open | None | T9690 Remove calls to methods deprecated by newPage() | ||
Resolved | None | T9871 Some PHUI form controls do not have identifiable "disabled" states | ||
Duplicate | None | T9913 ApplicationEditor stacked comment actions can't be removed on mobile |
Event Timeline
To further elaborate:
Even when obtaining *all* users (without criteria) in a paginating fashion with user.query(), it's preferable to have this because it is cursor based and doesn't suffer from O(offset) performance characteristic which is bad enough to be a real problem for 10k+ users.
FWIW is something like user.edit on the table? We'd like to be able to pre-create users with specific information such as 'real name', and a particular external account linked.
After D15959, user.search should support "find all non-disabled human users", likely with parameters in this vein:
{ "constraints": { "isDisabled": false, "isBot": false } }
The method returns slightly less information than user.search did; open to adding more information but it sounds like you don't need it for this use case. Some old keys like uri and image might be better as dictionaries now, so they can return multiple URIs, multiple resolutions, etc.
These changes are live on this install:
We can return more data easily if anything is missing, but I want to do that case-by-case and try to future-proof whatever format we're emitting so the "v3" API can last us for at least a few years. I don't have any specific additional changes planned, so pausing this for feedback.
Goal | Ref | Time | Notes |
---|---|---|---|
user.search | D15959 | 0.5 Hours | Implement basic modern user.search Conduit API method. |
Subtotal | 0.5 Hours | ||
Cumulative Total | 0.5 Hours |