- Create Economist SubmissionTracking package correctly: * mainArticle = full blog post content * coverLetter = 216-word SIR— letter * Links to blog post via blogPostId - Archive 'Letter to The Economist' from blog posts (it's the cover letter) - Fix date display on article cards (use published_at) - Target publication already displaying via blue badge Database changes: - Make blogPostId optional in SubmissionTracking model - Economist package ID: 68fa85ae49d4900e7f2ecd83 - Le Monde package ID: 68fa2abd2e6acd5691932150 Next: Enhanced modal with tabs, validation, export 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
31 lines
768 B
JavaScript
31 lines
768 B
JavaScript
#!/usr/bin/env node
|
|
/**
|
|
* Generate Test JWT Token
|
|
* Creates a valid JWT token for testing Rule Manager API
|
|
*/
|
|
|
|
require('dotenv').config();
|
|
const jwt = require('jsonwebtoken');
|
|
|
|
const JWT_SECRET = process.env.JWT_SECRET;
|
|
const JWT_EXPIRY = process.env.JWT_EXPIRY || '7d';
|
|
|
|
// Admin user from database
|
|
const payload = {
|
|
userId: '68e3a6fb21af2fd194bf4b50',
|
|
email: 'admin@tractatus.local',
|
|
role: 'admin'
|
|
};
|
|
|
|
const token = jwt.sign(payload, JWT_SECRET, {
|
|
expiresIn: JWT_EXPIRY,
|
|
audience: 'tractatus-admin',
|
|
issuer: 'tractatus'
|
|
});
|
|
|
|
console.log('\n=== Test JWT Token ===\n');
|
|
console.log('Token:', token);
|
|
console.log('\nUse in Authorization header:');
|
|
console.log(`Authorization: Bearer ${token}`);
|
|
console.log('\nExpires in:', JWT_EXPIRY);
|
|
console.log('');
|