Files
paul 9819d8db0b
continuous-integration/drone/push Build is failing
feat: Notifications page, Sidebar layout fixes, and Achievements enhancements
- implemented /notifications page with overdue/upcoming alerts
- Fixed sidebar scrolling in collapsed mode
- Moved notification button to sidebar footer
- Enhanced Achievements page with streak stats and tooltips
- Improved XP history to show task titles
- Added missing translations (en/de)
- Removed top bar header
- Fixed Docker environment routing
2025-12-17 10:06:36 +01:00

75 lines
2.9 KiB
TypeScript

import { storage } from "../server/storage";
import { scrypt, randomBytes } from "crypto";
import { promisify } from "util";
const scryptAsync = promisify(scrypt);
async function hashPassword(password: string) {
const salt = randomBytes(16).toString("hex");
const buf = (await scryptAsync(password, salt, 64)) as Buffer;
return `${buf.toString("hex")}.${salt}`;
}
async function run() {
try {
console.log("🔍 Checking for 'admin' user...");
let user = await storage.getUserByUsername("admin");
const password = "admin";
console.log(`🔐 Hashing password '${password}'...`);
const hashedPassword = await hashPassword(password);
if (user) {
console.log(`✅ User 'admin' found (ID: ${user.id}). Updating credentials...`);
await storage.updateUser(user.id, {
password: hashedPassword,
role: 'admin',
isActive: true,
aiEnabled: true,
is2faEnabled: false
});
console.log("✅ Admin user updated successfully.");
} else {
console.log("⚠️ User 'admin' not found. Checking by email 'admin@example.com'...");
const emailUser = await storage.getUserByEmail("admin@example.com");
if (emailUser) {
console.log(`✅ User found by email (ID: ${emailUser.id}). Updating to username 'admin'...`);
await storage.updateUser(emailUser.id, {
username: "admin",
password: hashedPassword,
role: "admin",
isActive: true,
aiEnabled: true,
showOnLeaderboard: false,
isSearchable: false
});
console.log("✅ Admin user updated/renamed successfully.");
} else {
console.log("🆕 Creating new 'admin' user...");
await storage.createUser({
username: "admin",
email: "admin@example.com",
password: hashedPassword,
role: "admin",
isActive: true,
showOnLeaderboard: false,
isSearchable: false,
// aiEnabled defaults to true in schema/storage if omitted in Insert,
// but depending on implementation might need it.
// Storage implementation handles defaults if not provided?
// Let's pass defaults we know are safe.
} as any); // cast as any to avoid strict InsertUser type mismatches if interfaces drift
console.log("✅ Admin user created successfully.");
}
}
process.exit(0);
} catch (e) {
console.error("❌ Failed to create/update admin user:", e);
process.exit(1);
}
}
run();