usuarios pre configurados

This commit is contained in:
2025-08-15 18:35:09 -06:00
parent 1c0d777699
commit 811f569391
12 changed files with 508 additions and 172 deletions

92
scripts/generate-uuids.js Normal file
View File

@@ -0,0 +1,92 @@
#!/usr/bin/env node
"use strict";
// Generate UUIDs and write them to server/src/config/uuids.json.
// Usage:
// node scripts/generate-uuids.js --count 210 [--force|--append]
// Defaults: count=210, no overwrite if file has entries.
const fs = require("fs");
const path = require("path");
const crypto = require("crypto");
function parseArgs(argv) {
const args = { count: 210, force: false, append: false };
for (let i = 2; i < argv.length; i++) {
const a = argv[i];
if (a === "--force") args.force = true;
else if (a === "--append") args.append = true;
else if (a === "--count") {
const n = Number(argv[++i]);
if (!Number.isFinite(n) || n <= 0) throw new Error("--count must be a positive number");
args.count = Math.floor(n);
} else if (/^--count=/.test(a)) {
const n = Number(a.split("=")[1]);
if (!Number.isFinite(n) || n <= 0) throw new Error("--count must be a positive number");
args.count = Math.floor(n);
} else {
throw new Error(`Unknown argument: ${a}`);
}
}
return args;
}
function genUuid() {
if (typeof crypto.randomUUID === "function") return crypto.randomUUID();
// Fallback: RFC4122 v4-ish
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, c => {
const r = (crypto.randomBytes(1)[0] % 16) | 0;
const v = c === "x" ? r : (r & 0x3) | 0x8;
return v.toString(16);
});
}
function uniqueUuids(n, existing = new Set()) {
const set = new Set(existing);
while (set.size < n) set.add(genUuid());
return Array.from(set);
}
function main() {
const { count, force, append } = parseArgs(process.argv);
const target = path.resolve(__dirname, "../server/src/config/uuids.json");
let current = [];
if (fs.existsSync(target)) {
try {
const raw = fs.readFileSync(target, "utf8");
const arr = JSON.parse(raw);
if (Array.isArray(arr)) current = arr.filter(x => typeof x === "string");
} catch {}
}
if (!force && !append && current.length > 0) {
console.log(`uuids.json already has ${current.length} entries. Use --force to overwrite or --append to add.`);
process.exit(0);
}
let out = [];
if (force) {
out = uniqueUuids(count);
} else if (append) {
const needed = Math.max(count, current.length + count);
const set = new Set(current);
out = uniqueUuids(needed, set);
} else {
// initial write when empty
out = uniqueUuids(count);
}
fs.mkdirSync(path.dirname(target), { recursive: true });
fs.writeFileSync(target, JSON.stringify(out, null, 2) + "\n", "utf8");
console.log(`Wrote ${out.length} UUIDs to ${path.relative(process.cwd(), target)}`);
}
try {
main();
} catch (err) {
console.error(err.message || err);
process.exit(1);
}