← All frames
Portals directory · Frame (a) · route /portals

Portals

The master-admin's directory of the portals they can manage — reached from the left menu of the FuzeFront shell. It is a launcher, not a switcher: there is no in-app context switch. Choosing a portal opens that portal's own host URL in a new browser tab, where management continues under the existing per-host tenant routing. Each portal is tagged by identity tier — soft (shares the root Authentik) or hard (its own Authentik instance). Scoped server-side to portals the caller may manage (Permit ReBAC).

Portals you manage

4 portals · 3 active

Northwind Active Soft
portal.northwind.example
Initech Active Soft
app.fuzefront.com/p/initech no custom domain
Mendys Robotics Active Hard
live.mendysrobotics.com own IdP
Acme Reseller Suspended Soft
portal.acme.example

Contract (real — adminPortals list). Rows come from GET /api/v1/admin/portals (cursor-paginated; "Load more" advances the cursor). The S1 extension adds identity_mode (soft | hard) → the tier badge, and launchUrl → the absolute href of "Open portal". The launch anchor is a plain <a target="_blank" rel="noopener noreferrer"> to the portal's own host — never an in-app route, never a JS window.open that could be popup-blocked, and never a same-tab navigation that unmounts the shell. launchUrl is server-provided (the portal's primary domain, or the root host /p/{slug} path route when it has no custom domain); the client never composes a host from client-held data. A suspended portal renders no launch affordance (see states frame, d5). The list is scoped by Permit ReBAC to portals the caller may manage — a caller with no manage authority sees the permission-denied state (d6), never a launch button. Flag fuzefront.platform.portals-directory (default OFF).

Review · portals-directory approve or reject each flow ↓
portals-directoryapproved · izzywdev