Enterprise user list pages

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Self managed instances have access to a list of users on their system via the /admin/users pages. There is no real equivalent for Organizations on .com. This issue represents the first step in providing these same features to .com Organizations with a read only paginated list of .com Organization members.

An important consideration for this stage of work is to determine how we will keep the self managed and .com code base aligned.

User Ownership Architecture

The architecture of self managed is usually thought of in this way:

graph TD
  subgraph Self managed instance
    Users[(Users)]
end

In code this is represented very simply as some derivation of User.all. We namespace administration of these users within /admin/users.

The architecture on .com is more complicated because .com is multi-tenanted:

graph TD
  subgraph .com instance
    Group --- Provider --- Users --- Identities
    Group --- Membership --- Users
  end
  subgraph Tenant IDP
    SAML --- samluser
    samluser[(Users)] -.- Users
    SAML -.- Provider
  end

The equivalent to User.all on .com would be Provider.users. The Provider is the creator of the User and provides the authentication link.

When we follow standard Ruby on Rails conventions we end up with a user management URL for a Provider of /providers/123/users.

Note that the group > membership > users complex does not directly represent user's within an Organization. We did initially try this with Group Managed Accounts (GMA) but was abandoned.


First step would be to produce the appropriate architecture like what I proposed with sitting under Provider. Second step would involve some kind of tech debt stage to align with the self managed code. It would not be as clean cut as that, but I want to highlight the effort required and the intention to keep the self managed and .com code aligned here.

It's also worth noting there's an overlap between the work we're doing and the list of billable members.

Edited by 🤖 GitLab Bot 🤖