Skip to content

feat(marketplace): system-admin allow-list management UI#8506

Open
LWS49 wants to merge 1 commit into
lws49/feat-marketplace-pr6b-backendfrom
lws49/feat-marketplace-pr6c-allowlist
Open

feat(marketplace): system-admin allow-list management UI#8506
LWS49 wants to merge 1 commit into
lws49/feat-marketplace-pr6b-backendfrom
lws49/feat-marketplace-pr6c-allowlist

Conversation

@LWS49

@LWS49 LWS49 commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds the System::Admin page for managing marketplace access rules. It lists the current typed rules, adds them through a two-step dialog that previews exactly who a rule would let in before it is saved, and carries an open-to-everyone / restrict toggle. The page is reachable from a new Marketplace Access entry in the admin navigator, and consumes the endpoints from the backend PR.

Design decisions

  • The add-rule dialog previews before saving rather than reporting the effect afterwards - a domain rule can match hundreds of people, and an admin cannot judge a rule like @nus.edu.sg without seeing who it actually reaches.
  • The preview lists blocked people first, then those who already have access, then the newly granted - the people a rule does not newly reach are the only reason to read the list at all, and alphabetical order buries them.
  • The counts line names exclusions only when there are any - spelling out how many are new is noise in the common case where everyone is new.
  • The instance picker is inlined in the rule form rather than lifted into lib/ - the only other instance picker in the codebase belongs to course duplication, and keeping this feature's UI self-contained means it can be reverted by deleting its own files.
  • Opening the marketplace to everyone preserves the scoped rules instead of deleting them, so restricting again is a single toggle rather than a re-entry of every rule.

Regression prevention

Covers: lazy single-fetch of the instance list, the preview request and render for each rule type, the counts line with and without the blocked and already-has-access clauses, the blocked marker, an empty preview, rule table rendering and deletion, the mode banner and its confirmation dialogs, and the index page's fetch, create, delete and toggle flows including failure toasts.

@LWS49
LWS49 force-pushed the lws49/feat-marketplace-pr6b-backend branch from c1b9c90 to b0b796d Compare July 22, 2026 05:22
@LWS49
LWS49 force-pushed the lws49/feat-marketplace-pr6c-allowlist branch from 88a233d to c02489f Compare July 22, 2026 05:35
@LWS49
LWS49 force-pushed the lws49/feat-marketplace-pr6b-backend branch from b0b796d to c7e43f9 Compare July 22, 2026 05:40
@LWS49
LWS49 force-pushed the lws49/feat-marketplace-pr6c-allowlist branch 2 times, most recently from dcd6d34 to 1b71da5 Compare July 22, 2026 05:54
System::Admin page to manage the marketplace allow-list: add/remove typed
rules (specific user, whole instance, or email domain) with a live preview of
who each rule would let in, and an open-to-everyone / restrict toggle.
@LWS49
LWS49 force-pushed the lws49/feat-marketplace-pr6c-allowlist branch from 1b71da5 to 0234290 Compare July 22, 2026 06:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant