Build — Windows, Linux & macOS / GDPRScanner / linux (push) Has been cancelled
Build — Windows, Linux & macOS / GDPRScanner / macos (push) Has been cancelled
Build — Windows, Linux & macOS / GDPRScanner / windows (push) Has been cancelled
Build — Windows, Linux & macOS / Create GitHub Release (push) Has been cancelled
Manual accounts were never scanned: - Sidebar "add user" entries had no platform, and getSelectedUsers() required platform === 'm365', so they were dropped from every scan. - Profile-editor manual accounts were stored as "manual:<email>", which is not a Graph user id, and applying the profile never put them in the sidebar list, so they could not be selected. Now the editor looks the email up via /api/users/lookup and stores the directory id plus name/email (falling back to manual:<email> only when the lookup fails). Applying a profile adds its manual accounts to the sidebar and resolves legacy manual:<email> entries, logging any that can't be found. The scan engine resolves remaining manual:<email> ids (e.g. from scheduled scans) via the new M365Connector.lookup_user(), skipping and reporting failures without widening to all users. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
39 lines
1.2 KiB
JavaScript
39 lines
1.2 KiB
JavaScript
// state.js — shared mutable state for GDPRScanner
|
|
// Imported by every module that needs cross-module state.
|
|
// Use S.varName everywhere instead of bare varName.
|
|
|
|
export const S = {
|
|
// Scan results
|
|
flaggedData: [],
|
|
filteredData: [],
|
|
totalCPR: 0,
|
|
isListView: false,
|
|
// SSE connection
|
|
es: null,
|
|
_userStartedScan: false,
|
|
// Scan running flags + progress
|
|
_m365ScanRunning: false,
|
|
_googleScanRunning: false,
|
|
_fileScanRunning: false,
|
|
_srcPct: { m365: 0, google: 0, file: 0 },
|
|
_progressCurrentUser: '',
|
|
// Users
|
|
_allUsers: [],
|
|
_m365UsersLoaded: false, // true once loadUsers() has fetched the directory
|
|
_googleUsersMerged: false, // true once _mergeGoogleUsers() has added Google users
|
|
// Auth
|
|
_currentAppMode: null,
|
|
// Profiles
|
|
_profiles: [],
|
|
_activeProfileId: null,
|
|
_pendingProfileSources: [],
|
|
_pendingGoogleSources: null,
|
|
// Sources
|
|
_fileSources: [],
|
|
// History browser
|
|
_historyRefScanId: null, // null = live/SSE, number = viewing a past session
|
|
// Bulk disposition
|
|
_selectMode: false,
|
|
_selectedIds: new Set(),
|
|
};
|