You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implements the dashboard-settings feature (#7 (GH ref, not yet mapped)): adds an at-a-glance vault dashboard with KPI cards, a migration status banner, admin-only CA health and pending-app cards, a full admin settings page (password policy, CA health, application approval queue), and per-user preferences (session timeout, notification toggles) wired into NcAppSettingsDialog. All items are read-only aggregations or IAppConfig/IConfig CRUD with no new database migrations.
lib/Controller/DashboardController.php — updated; adds summary() endpoint with OAS 3.0 annotations
lib/Controller/SettingsController.php — new controller; getAdminSettings/updateAdminSettings (admin-only) and getUserSettings/updateUserSettings (@NoAdminRequired)
JS lint: npm run lint passes with zero errors/warnings
Unit tests for DashboardService and SettingsService are deferred pending Nextcloud environment availability (composer install requires network — mocked in CI via existing PHPUnit bootstrap)
Gemigreerd van Codeberg — oorspronkelijk Conduction/doriath#1, geopend door rubenvdlinde op 2026-05-29.
Summary
Implements the dashboard-settings feature (#7 (GH ref, not yet mapped)): adds an at-a-glance vault dashboard with KPI cards, a migration status banner, admin-only CA health and pending-app cards, a full admin settings page (password policy, CA health, application approval queue), and per-user preferences (session timeout, notification toggles) wired into NcAppSettingsDialog. All items are read-only aggregations or IAppConfig/IConfig CRUD with no new database migrations.
Spec Reference
https://github.com/algorithm-conduction/doriath/blob/hydra/doriath-dashboard-settings/spec/design.md (spec lives in build context; see /spec/design.md and /spec/tasks.md)
Changes
lib/Service/DashboardService.php— new service; fetchSummary(userId, isAdmin) aggregates vault KPIs from existing mappers (zero-defaults until [OpenSpec] [doriath] implement-encryption-suites #1 (GH ref, not yet mapped)/[OpenSpec] [doriath] implement-secrets #2/[OpenSpec] [doriath] implement-user-sharing #3/[OpenSpec] [doriath] implement-secret-requests #5 land)lib/Service/SettingsService.php— new service; admin config constants + getAdminSettings/updateAdminSettings (range-validated 12-20 / 3-4) + getUserPreferences/updateUserPreferences (whitelist-filtered IConfig writes)lib/Controller/DashboardController.php— updated; adds summary() endpoint with OAS 3.0 annotationslib/Controller/SettingsController.php— new controller; getAdminSettings/updateAdminSettings (admin-only) and getUserSettings/updateUserSettings (@NoAdminRequired)appinfo/routes.php— updated; adds /api/dashboard/summary, /api/settings/admin, /api/settings/usersrc/components/dashboard/DashboardKpiCard.vue— new; custom KPI card with icon slot and default/warning/error variantssrc/components/dashboard/MigrationBanner.vue— new; NcNoteCard-based warning/error banner for migration countssrc/components/dashboard/PendingAppsCard.vue— new; admin-only pending-approvals count + link to queuesrc/components/dashboard/CaHealthCard.vue— new V1 stub; CA status with colour-coded indicator dotsrc/components/dashboard/RecentSecretsWidget.vue— new V1 stub; recently-accessed list with empty statesrc/store/modules/dashboard.js— new Pinia store; fetchSummary action, isEmpty + hasMigrationIssues getterssrc/views/Dashboard.vue— updated; replaces placeholder with KPI grid, migration banner, admin row, recent-secrets widgetsrc/components/settings/PasswordPolicySection.vue— new; length slider (12-20) + score selector (3-4)src/components/settings/CaHealthSection.vue— new V1 stub; status display, management actions deferred to V1src/components/settings/ApplicationQueueSection.vue— new; approve/reject queue with empty statesrc/store/modules/adminSettings.js— new Pinia store; fetchSettings/updateSettings + approve/rejectApplication stubssrc/views/settings/Settings.vue— updated; replaces old register form with three admin sectionssrc/components/settings/UserPreferencesSection.vue— new; session-timeout slider + notification toggles (V1 group-share/security scaffolded but disabled)src/store/modules/userSettings.js— new Pinia store; fetchPreferences/updatePreferencessrc/views/UserSettingsDialog.vue— new; NcAppSettingsDialog wrapper for user preferencessrc/App.vue— updated; nav footer settings item opens UserSettingsDialogsrc/store/store.js— updated; exports new stores.eslintrc.js— new; adds missing ESLint configuration (extends @nextcloud/eslint-config)Test Coverage
php -lnpm run lintpasses with zero errors/warningsGemigreerd van Codeberg — oorspronkelijk Conduction/doriath#1, geopend door
rubenvdlindeop 2026-05-29.