tractatus/scripts/reset-admin-password.js
TheFlow 7ab96f15d2 feat(admin): add password reset utility and login instructions
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)
2025-10-20 21:00:42 +13:00

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();