Export Intune reports via Microsoft Graph with live polling and CSV table rendering. Includes a lightweight proxy (for blob downloads), a public status page, and a hidden admin panel with short‑lived audit logging.
- Install deps:
npm install-
Create
.envfrom.env.exampleand set a strong admin path + pass. -
Start the server:
npm start- Open:
http://localhost:3000
If you host the UI separately, set config.json:
{
"proxyBaseUrl": "http://localhost:3000"
}- SPA app registration
- Redirect URI:
http://localhost:3000
- Delegated permissions:
Reports.Read.AllDeviceManagementManagedDevices.Read.All
This app does not hardcode report names. The UI links to the Intune reports list so users can self‑serve.
- App:
http://localhost:3000 - Status UI:
http://localhost:3000/status - Status JSON:
http://localhost:3000/status.json - Admin:
http://localhost:3000/<ADMIN_PATH>?code=<ADMIN_PASS>
Shows backend status, audit events, and audit settings.
ADMIN_PATH=/control-CHANGE_ME
ADMIN_PASS=CHANGE_ME_STRONG
PUBLIC_PROXY_URL=
ADMIN_PATH: hidden admin routeADMIN_PASS: required access codePUBLIC_PROXY_URL: set when frontend is hosted elsewhere
{
"proxyBaseUrl": "https://your-backend.example.com"
}- Default retention is 5 minutes.
- Storage mode can be set in the Admin panel:
memory(in‑memory only)file(persists toaudit-log.json)
- Node is used only for the proxy + audit + admin.
- Report data is fetched via the proxy to avoid CORS issues.
401 Unauthorized: check Graph permissions + admin consent.CORS error: ensure the proxy server is running.- Admin panel 404: verify
ADMIN_PATH+ADMIN_PASS, then restart server.