AutoMate Technisch Help

Navigation Features

Het Navigation Features systeem beheert de zichtbaarheid van menu-items in het Management Portal. Per tenant kan worden ingesteld welke features zichtbaar zijn in de navigatie.

Architectuur

Settings UI
Management Portal

Navigation Features API

SQL Database
NavigationFeatureDefinitions
TenantNavigationFeatures

MainLayout.razor

NavigationFeaturesState

Component

Verantwoordelijkheid

NavigationFeatureDefinitions (tabel)

Master-lijst van alle navigatie-items met defaults

TenantNavigationFeatures (tabel)

Per-tenant overrides

NavigationFeaturesState (portal)

Cached state in het Management Portal

Settings > Navigation Features (UI)

Beheerinterface voor tenants

Hiërarchie

Features zijn hiërarchisch opgebouwd: een parent feature moet ingeschakeld zijn voordat child features zichtbaar worden.

Top-level features

Key

Label

Default

Dashboard

Dashboard

Aan

Status

Status

Uit

IAM

IAM

Uit

HR

HR

Aan

UserTypes

Gebruikerstypen

Aan

Provisions

Provisioning

Aan

Workflows

Workflows (legacy)

Aan

WorkflowsV2

Workflows 2.0

Uit

Branding

Branding

Aan

Settings

Instellingen

Aan

HelpAndSupport

Help & Support

Aan

Sub-features (selectie)

Key

Parent

Label

Default

IAM.Accounts

IAM

Medewerkers

Aan

IAM.Sync

IAM

HR Koppeling

Aan

UserTypes.Personas

UserTypes

Personas

Aan

UserTypes.Bundles

UserTypes

Bundels

Aan

UserTypes.OrgModel

UserTypes

OrgModel (V2)

Uit

UserTypes.AccessControl

UserTypes

Toegangsbeheer (RBAC)

Uit

WorkflowsV2.Definitions

WorkflowsV2

Definities

Aan

WorkflowsV2.Executions

WorkflowsV2

Uitvoeringen

Aan

Hoe het werkt

Portal — menu rendering

Bij het laden van het Management Portal haalt MainLayout.razor de features op via de API:

var features = await ApiClient.Main.Settings.NavigationFeatures.GetAsync(); NavFeaturesState.Update(features);

In de navigatie wordt per item gecontroleerd:

@if (IsFeatureEnabled("WorkflowsV2")) { <RadzenPanelMenuItem Path="@PageRoutes.WorkflowsV2Definitions" /> }

Matching logica (NavigationFeaturesState)

  1. Feature key opzoeken in de dictionary

  2. Als de key een punt bevat (bijv. IAM.Accounts), eerst de parent (IAM) controleren

  3. Parent uit → child ook uit, ongeacht eigen instelling

  4. Feature niet gevonden → default aan (fail-open)

API Endpoints

Methode

Pad

Beschrijving

GET

/main/settings/navigation-features

Alle features ophalen voor de huidige tenant

PUT

/main/settings/navigation-features/{key}

Tenant-specifieke override instellen

DELETE

/main/settings/navigation-features/{key}

Override verwijderen (terug naar default)

PATCH

/main/settings/navigation-features/{key}/default

Systeembrede default aanpassen

Alle endpoints vereisen de X-Tenant-Id header.

Database

Gedefinieerd in migratie 081:

CREATE TABLE NavigationFeatureDefinitions ( NavigationKey NVARCHAR(100) PRIMARY KEY, ParentNavigationKey NVARCHAR(100) NULL, Label NVARCHAR(200) NOT NULL, IsEnabledByDefault BIT NOT NULL DEFAULT 1, SortOrder INT NOT NULL DEFAULT 0, FOREIGN KEY (ParentNavigationKey) REFERENCES NavigationFeatureDefinitions(NavigationKey) ); CREATE TABLE TenantNavigationFeatures ( TenantId UNIQUEIDENTIFIER NOT NULL, NavigationKey NVARCHAR(100) NOT NULL, IsEnabled BIT NOT NULL, PRIMARY KEY (TenantId, NavigationKey), FOREIGN KEY (NavigationKey) REFERENCES NavigationFeatureDefinitions(NavigationKey) );

Verschil met Feature Flags

Aspect

Feature Flags (config)

Navigation Features (database)

Opslag

appsettings.json

SQL Database

Beheer

Code deployment

Settings UI in portal

Doel

Feature versie-selectie (V1 vs V2)

Menu-zichtbaarheid

Hiërarchie

Plat

Parent-child relaties

Tenant scoping

Expliciete tenant-lijst per flag

Per-tenant overrides

Default bij ontbreken

Uit

Aan (fail-open)

Gebruik Feature Flags voor het schakelen tussen implementaties (bijv. Licenties V1 vs V2). Gebruik Navigation Features voor het tonen/verbergen van menu-items per tenant.

Last modified: 10 April 2026