46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
/**
|
|
* Password Hash Injector for Weight Tracker
|
|
*
|
|
* This script injects the password hash from environment variables
|
|
* into the HTML file before it's served to the client.
|
|
*/
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
// Default password hash (can be overridden via environment variables)
|
|
const DEFAULT_HASH = '$2a$10$EgxHKjDDFcZKtQY9hl/N4.QvEQHCXVnQXw9dzFYlUDVKOcLMGp9eq'; // hash for "password"
|
|
|
|
/**
|
|
* Inject password hash into HTML file
|
|
* @param {string} htmlPath - Path to the HTML file
|
|
* @param {string} passwordHash - Bcrypt password hash
|
|
*/
|
|
function injectPasswordHash(htmlPath, passwordHash) {
|
|
try {
|
|
// Read the HTML file
|
|
let html = fs.readFileSync(htmlPath, 'utf8');
|
|
|
|
// Replace the placeholder with the actual password hash
|
|
html = html.replace('$PASSWORD_HASH$', passwordHash);
|
|
|
|
// Write the modified HTML back to the file
|
|
fs.writeFileSync(htmlPath, html);
|
|
|
|
console.log(`Password hash injected into ${htmlPath}`);
|
|
} catch (error) {
|
|
console.error(`Error injecting password hash: ${error.message}`);
|
|
}
|
|
}
|
|
|
|
// Get password hash from environment variable
|
|
const passwordHash = process.env.PASSWORD_HASH || DEFAULT_HASH;
|
|
|
|
// Path to the HTML file
|
|
const htmlPath = path.join(__dirname, 'public', 'index.html');
|
|
|
|
// Inject password hash
|
|
injectPasswordHash(htmlPath, passwordHash);
|
|
|
|
console.log('Password hash injection complete');
|