SUMMARY: Created admin password reset utility and comprehensive login instructions to help user access admin portal. NEW FILES: - scripts/reset-admin-password.js: Automated password reset for production - ADMIN_LOGIN_INSTRUCTIONS.md: Complete admin access documentation PASSWORD RESET UTILITY: - Resets admin@agenticgovernance.digital password - Uses bcrypt for secure password hashing - Works on both local and production environments - Usage: node scripts/reset-admin-password.js 'NewPassword' CURRENT ADMIN CREDENTIALS (Production): - Email: admin@agenticgovernance.digital - Password: TractatusDev2025 - Login URL: https://agenticgovernance.digital/admin/login.html VERIFICATION COMPLETED: - ✅ Admin user exists in production database - ✅ Password correctly hashed with bcrypt (60 chars, prefix) - ✅ Password verification test passed (bcrypt.compare returns true) - ✅ User active and has admin role ADMIN DASHBOARD ACCESS: Once logged in, provides access to 9 admin tools: - Blog curation with AI-powered drafting - Newsletter management - Media triage - Case moderation - Rule manager - Project manager - Hooks dashboard - Audit analytics - CLAUDE.md migrator TROUBLESHOOTING: - Rate limit: 5 login attempts per 15 minutes - Alternative account: admin@tractatus.local (may need reset) - Server logs: journalctl -u tractatus -f - Browser console for client-side errors 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com)
58 lines
1.6 KiB
JavaScript
Executable file
58 lines
1.6 KiB
JavaScript
Executable file
#!/usr/bin/env node
|
|
/**
|
|
* Reset Admin Password
|
|
* Quick utility to reset admin@agenticgovernance.digital password
|
|
*/
|
|
|
|
require('dotenv').config();
|
|
const bcrypt = require('bcrypt');
|
|
const { connect, close, getCollection } = require('../src/utils/db.util');
|
|
|
|
const NEW_PASSWORD = process.argv[2] || 'Tractatus@2025!';
|
|
|
|
async function resetPassword() {
|
|
try {
|
|
console.log('🔐 Resetting admin password...');
|
|
|
|
await connect();
|
|
const users = await getCollection('users');
|
|
|
|
// Find admin user
|
|
const admin = await users.findOne({ email: 'admin@agenticgovernance.digital' });
|
|
|
|
if (!admin) {
|
|
console.error('❌ Admin user not found: admin@agenticgovernance.digital');
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log('✓ Admin user found');
|
|
|
|
// Hash new password
|
|
console.log('⏳ Hashing password...');
|
|
const hashedPassword = await bcrypt.hash(NEW_PASSWORD, 10);
|
|
|
|
// Update password
|
|
console.log('⏳ Updating database...');
|
|
await users.updateOne(
|
|
{ email: 'admin@agenticgovernance.digital' },
|
|
{ $set: { password: hashedPassword, updated_at: new Date() } }
|
|
);
|
|
|
|
console.log('\n✅ Password reset successfully!');
|
|
console.log('\n📋 Admin Credentials:');
|
|
console.log(` Email: admin@agenticgovernance.digital`);
|
|
console.log(` Password: ${NEW_PASSWORD}`);
|
|
console.log('\n🌐 Login URL:');
|
|
console.log(' https://agenticgovernance.digital/admin/login.html');
|
|
console.log('');
|
|
|
|
} catch (error) {
|
|
console.error('❌ Error:', error.message);
|
|
console.error(error.stack);
|
|
process.exit(1);
|
|
} finally {
|
|
await close();
|
|
}
|
|
}
|
|
|
|
resetPassword();
|