/** * Internal API Key Generator (Node.js version) * Generates a secure internal API key and its bcrypt hash */ const crypto = require('crypto'); const bcrypt = require('bcryptjs'); function generateApiKey() { const characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-"; const length = 48; let result = "int_shopcall_"; for (let i = 0; i < length; i++) { const randomIndex = crypto.randomInt(0, characters.length); result += characters.charAt(randomIndex); } return result; } async function hashApiKey(apiKey) { const salt = await bcrypt.genSalt(12); return await bcrypt.hash(apiKey, salt); } async function main() { const keyName = process.argv[2] || "Untitled Internal Key"; console.log("\nšŸ”‘ Generating Internal API Key...\n"); // Generate API key const apiKey = generateApiKey(); console.log("āœ… API Key Generated:"); console.log(` ${apiKey}`); // Generate hash console.log("\nā³ Generating bcrypt hash..."); const hash = await hashApiKey(apiKey); console.log("āœ… Hash Generated:"); console.log(` ${hash}`); // Output the data console.log("\nšŸ“ Data for insertion:"); console.log("━".repeat(80)); console.log(JSON.stringify({ key_name: keyName, api_key: apiKey, key_hash: hash, description: 'Auto-generated internal API key', created_by: 'admin' }, null, 2)); console.log("━".repeat(80)); } main().catch(console.error);