Skip to content

Control Center left nav hidden for admins due to endpoint mismatch #1009

Description

@Bionic711

Issue

The Control Center left navigation section can be hidden for signed-in admins even when the ControlCenterAdmin and ControlCenterDashboardReader app-role settings are disabled.

In the full sidebar template, the on-page Control Center section is guarded by request.endpoint == 'control_center', but the route is registered under the frontend_control_center blueprint and is linked elsewhere as frontend_control_center.control_center.

Steps to Reproduce

  1. Sign in as a user with the Admin role.
  2. Ensure Admin Settings has Require ControlCenterAdmin App Role disabled.
  3. Ensure Admin Settings has Allow ControlCenterDashboardReader App Role disabled.
  4. Use left-nav layout and open /admin/control-center.

Expected Behavior

Regular admins should see the Control Center left-nav section and management tab links when ControlCenterAdmin enforcement is disabled.

Actual Behavior

The Control Center page can load for the admin, but the Control Center section in the left nav does not render because the endpoint comparison does not match the blueprint-qualified endpoint name.

Impact

Admins lose the left-nav navigation affordance for Control Center tabs even though route-level access permits regular Admin users in this configuration.

Notes

Investigation points:

  • application/single_app/templates/_sidebar_nav.html: checks request.endpoint == 'control_center'.
  • application/single_app/app.py: registers the frontend Control Center route with blueprint name frontend_control_center.
  • Existing links use url_for('frontend_control_center.control_center').
  • functions_authentication.control_center_required('dashboard') and route_frontend_control_center.control_center both treat regular Admin as full access when require_member_of_control_center_admin is disabled.
  • Related follow-up: consider normalizing the two Control Center app-role setting values to booleans when loading settings, since existing stored non-boolean values could make Jinja conditions behave differently from the admin UI state.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Fields

No fields configured for issues without a type.

Projects

Status
Pending Evaluation

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions