Settings Consolidation (37+ pages to 8 hubs): - Asset Type Hub: Unified type management with plugin descriptors - Model Catalog Hub: Vendors, types, models, operating systems - Asset Configuration Hub: Statuses, relationships, fields, identifiers - Security Hub: Authentication, tokens, users, audit - Site Configuration Hub: Site settings, floor map, branding, imports - Integrations Hub: ServiceNow, Zabbix, Dell warranty - Locations Hub: Locations, business units, employees - Network Infrastructure Hub: VLANs, subnets Plugin Descriptor Pattern: - Add get_asset_type_descriptor hook to BasePlugin - Implement descriptors in 6 plugins (printers, computers, machines, network, measuringtools, locations) - Add /api/pluginui/asset-type-descriptors and core-type-descriptors endpoints - Generic SubtypesTab component renders CRUD UI from descriptor schema Security Fixes: - Fix stored XSS via javascript: URIs in Models and Support Teams - Add URL scheme validation (allow only http/https) in create/update endpoints - Fix plugin contract violations in endpoints plugin (use shopdb.api imports) - Add missing requiresAdmin guard to printer model supplies route - Add user-facing error messages to API token load failures Integration Improvements: - Add persistent tab navigation to ServiceNow, Zabbix, and Dell Warranty settings - Standardize integration settings UI across all three pages - Fix tab visibility when navigating between integrations Tested with 94-agent orchestrated review for ADR compliance and security.
30 lines
1010 B
JavaScript
30 lines
1010 B
JavaScript
/**
|
|
* Employees plugin frontend routes (ADR-013 Phase 4). Extracted from core.js -
|
|
* employee detail + the directory settings page belong to the employees plugin.
|
|
*/
|
|
export default [
|
|
{
|
|
path: 'employees/:sso',
|
|
name: 'employee-detail',
|
|
component: () => import('./views/EmployeeDetail.vue'),
|
|
meta: { plugin: 'employees' }
|
|
},
|
|
{
|
|
path: 'settings/employeedirectory',
|
|
name: 'employee-directory',
|
|
component: () => import('./views/EmployeeDirectory.vue'),
|
|
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'employees' }
|
|
},
|
|
{
|
|
path: 'settings/locations/employees',
|
|
name: 'locations-hub-employees',
|
|
component: () => import('./views/EmployeeDirectory.vue'),
|
|
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'employees' }
|
|
}
|
|
]
|
|
|
|
// No full-screen routes: every view in this plugin renders inside
|
|
// AppLayout. Declared so routes.gen.js can read `.toplevel` off the module
|
|
// without Rollup warning about a missing export.
|
|
export const toplevel = []
|