3m-portal/dashboard.html
Vadym Samoilenko 67fcb017cc Prepare for production: remove hardcoded credentials and fix bugs
- Move service account credentials to .env (loaded server-side only)
- server.js: inject credentials in proxy, strip any client-provided creds,
  replace deprecated url.parse with new URL
- auth.js / dashboard.js: remove all hardcoded passwords from client code
- dashboard.js: remove broken category filter, fix redundant user.info call
  (use stored userId), add HTML escaping against XSS
- login.html: remove unused password field
- dashboard.html: remove broken category filter UI
- Add .gitignore to exclude .env and node_modules
- Add .env.example as configuration template

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-11 20:17:49 +00:00

75 lines
3.2 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>3M - OMG Portal</title>
<link rel="icon" type="image/png" href="Images/login_logo.png">
<link rel="stylesheet" href="styles.css">
</head>
<body class="dashboard-page">
<!-- Dashboard Header -->
<div class="dashboard-header-bar">
<div class="dashboard-title-section">
<img src="Images/login_logo.png" alt="3M Logo" class="dashboard-logo">
<h1>Jobs</h1>
</div>
<div class="dashboard-actions">
<button id="refreshBtn" class="refresh-button">Refresh</button>
<button id="signOutBtn" class="sign-out-button">Sign Out</button>
</div>
</div>
<!-- Dashboard Content -->
<div class="dashboard-content">
<!-- Project Header -->
<div class="project-header">
<div class="project-info">
<h2>Overall Progress</h2>
<div id="overallProgressContainer" style="width: 100%; margin-top: 15px;">
<p id="overallProgressText" class="job-info-line" style="margin-bottom: 10px;"><strong>0 of 0 elements done (0%)</strong></p>
<div class="progress-bar-container">
<div class="progress-bar">
<div class="progress-segment progress-done" id="overallDone" style="width: 0%"></div>
<div class="progress-segment progress-finish" id="overallFinish" style="width: 0%"></div>
<div class="progress-segment progress-remaining" id="overallRemaining" style="width: 100%"></div>
</div>
<div class="progress-legend">
<span class="legend-item">
<span class="legend-color legend-done"></span>
<span id="overallDoneText">Done: 0 (0%)</span>
</span>
<span class="legend-item">
<span class="legend-color legend-finish"></span>
<span id="overallFinishText">Finished: 0 (0%)</span>
</span>
<span class="legend-item">
<span class="legend-color legend-remaining"></span>
<span id="overallTotalText">Total: 0</span>
</span>
</div>
</div>
</div>
</div>
</div>
<!-- Loading Message -->
<div id="loadingMessage" class="loading-message" style="display: none;">
<p>Loading jobs...</p>
</div>
<!-- Error Message -->
<div id="errorMessage" class="error-message" style="display: none;"></div>
<!-- Jobs Grid -->
<div id="jobsGrid" class="jobs-grid"></div>
<!-- Empty State -->
<div id="emptyState" class="empty-state" style="display: none;">
<p>No jobs found</p>
</div>
</div>
<script src="dashboard.js"></script>
</body>
</html>