Access, permissions, and missing controls
Understand Solum roles, team permissions, and why actions or navigation items may not appear.
Solum intentionally hides or blocks product areas based on authentication state, team membership, team type, linked builder profile, team role, and current feature availability. This page is the quickest way to diagnose why a user cannot see a button, page, or action.
How access works
Think of access in layers. Each layer narrows what a user can do.
| Layer | What it controls | Examples |
|---|---|---|
| Public visitor | Pages and actions available without signing in. | Explore, builder pages, community pages, development pages, sharing, inquiries. |
| Signed-in user | Personal account pages and authenticated downloads. | Dashboard, Settings, locked document downloads, invitation acceptance. |
| Team member | Access to a specific team workspace. | Team overview, member list when authorized, billing when authorized. |
| Linked builder team | Builder-specific management tools. | Builder profile, logo upload, development media, promotions. |
| Team role and permissions | Which actions are available inside a team. | Settings, members, billing, promotion checkout. |
| Platform role | Internal Forcir operator tooling. | Admin Panel link. |
If a user can sign in but cannot open a team page, they are probably not a member of that team or are signed in with the wrong email.
Public vs signed-in features
| Feature | Sign-in required? | Additional requirement |
|---|---|---|
| Explore search and filters | No | None. |
| Map browsing | No | Browser support and map/location data. |
| Development pages | No | Published development data. |
| Builder and community pages | No | Published builder/community data. |
| Submit an inquiry | No | Valid development page. |
| Download development documents | Yes | Confirmed document asset. |
| Dashboard | Yes | None, but team cards require team membership. |
| Account settings | Yes | None. |
| Team workspace | Yes | Membership in that team. |
| Billing portal | Yes | Manage billing. |
| Builder media tools | Yes | Builder team, linked builder profile, Manage team. |
| Admin Panel | Yes | Forcir platform role. |
Team roles at a glance
| Role | Default access | Seat behavior |
|---|---|---|
| Owner | Full team permissions, including billing and privilege administration. | Counts as a billable seat. |
| Admin | Day-to-day team administration and operational permissions. Billing is not included by default. | Counts as a billable seat. |
| Member | Baseline operational role. No team settings, member management, or billing by default. | Counts as a billable seat. |
| Billing | Billing portal access only. Intended for finance contacts. | Does not count as a billable seat. |
Admins can usually invite regular members. Only owners and platform administrators can invite Admin or Billing users.
Permission reference
| Permission | Current product meaning |
|---|---|
| Manage team | Update team settings. Current builder profile and asset write actions also depend on this broader team update gate. |
| Manage members | Open member management, invite regular members, revoke invitations, and remove non-owner members. |
| Manage billing | Open billing portal, start promotion checkout, and cancel active promotions. |
| Manage developments | Role contract for development work. Some current product routes still use broader team update checks. |
| Manage floor plans | Role contract for floorplan work. Full builder-facing floorplan editing is not available yet. |
| Manage leads | Role contract for future lead management. A complete builder-facing lead inbox is not available yet. |
| View analytics | Role contract for analytics. Analytics may not appear until a product route exists. |
Some permissions are present in the role model before a complete page exists. Do not assume a permission label means a complete page or control is available.
Common visibility rules
| Page or control | Appears when | If it does not appear |
|---|---|---|
| Sign in | Visitor is signed out. | User is already signed in. Use the avatar menu. |
| Avatar menu | User is signed in. | Session may have expired. Sign in again. |
| Teams menu item | User is signed in. | User is signed out. |
| Dashboard team card | User belongs to a non-personal team. | User has no accepted team membership or is using the wrong email. |
| Team Settings button | User has Manage team or platform admin access. | Ask an owner to change the role or make the update. |
| Team Members card | User has Manage members or platform admin access. | Members and billing users usually do not see it. |
| Invite role options Admin and Billing | User is owner or platform admin. | Admins can invite only regular members. |
| Member remove button | User can manage members and target member is not owner. | Owners cannot be removed directly. |
| Team Billing card | User has Manage billing or platform admin access. | Admins do not get billing by default. |
| Builder profile settings | Team is a linked builder team and user can manage team. | Team may not be linked or user lacks permission. |
| Builder logo uploader | Linked builder profile and Manage team. | Confirm builder provisioning and role. |
| Development management list | Builder team is linked to a builder profile. | If no builder is linked, Solum shows "No builder linked". |
| Hero, gallery, document upload controls | User can manage team and development belongs to linked builder. | File, ownership, storage, or permission checks may fail. |
| Promotion checkout | User has Manage billing, development belongs to linked builder, and no active/pending promotion exists. | Existing promotion or missing billing access blocks checkout. |
| Admin Panel link | User has a Forcir platform role. | Team roles do not grant platform admin access. |
Actions that can still fail
Some screens may render an action before the API enforces the final rule. If a visible action fails, check the server-side requirement.
| Action | Required condition |
|---|---|
| Update team settings | Manage team. |
| Delete a team | Owner or platform admin, and not a personal team. |
| Send a regular member invitation | Manage members. |
| Invite Admin or Billing users | Owner or platform admin. |
| Revoke a pending invitation | Manage members. |
| Remove a member | Manage members, target is not owner. |
| Update builder profile | Linked builder team and Manage team. |
| Upload builder logo or development media | Linked builder team, owned entity, Manage team, valid file, configured storage. |
| Open billing portal | Manage billing. |
| Start featured promotion checkout | Manage billing, linked builder team, owned development, no active or pending promotion. |
| Cancel featured promotion | Manage billing and an active promotion owned by the team. |
Diagnostic flow
For any missing page
- Confirm the user is signed in.
- Confirm the user is using the expected email address.
- Confirm the user can see the team on the dashboard.
- Confirm the team type.
- Confirm the user's role inside that team.
- Confirm the feature is available in the product, not only represented by a permission.
For builder features
- Confirm the team type is Builder.
- Confirm the team is linked to a builder profile.
- Confirm the target development belongs to that builder.
- Confirm the user has Manage team for profile/media actions.
- Confirm object storage is configured for uploads.
For billing and promotions
- Confirm the user has Manage billing.
- Confirm the team is linked to a builder profile for promotions.
- Confirm the development belongs to that builder.
- Confirm there is no active or pending promotion.
- Confirm Stripe prices are configured for monthly or quarterly checkout.
Current product limits
These limits are intentional in public docs:
- Saved homes are not available as a complete feature yet.
- Builder self-serve claiming is not available yet.
- Builder teams cannot fully create or edit all catalog records through public team tools.
- A complete builder-facing lead inbox is not available yet.
- Admin/import/catalog operations remain internal.
For a broader feature matrix, see Current feature boundaries.