const jwt = require("jsonwebtoken"); const config = require("../src/config/haraka"); const User = require("../src/db/models/User"); const { Model } = require("objection"); const Knex = require("knex"); const knexConfig = require("../src/config/database"); const knex = Knex(knexConfig.development); Model.knex(knex); const email = process.argv[2]; const expire = process.argv[3]; if (!email || !expire) { console.error("Usage: node generate_token.js [expire]h,d,m,y"); process.exit(1); } async function main() { const user = await User.query().where("email", email).first(); if (!user) { console.error("User not found"); process.exit(1); } const generateToken = () => { return jwt.sign( { id: user.id, email: user.email, is_admin: user.is_admin }, config.auth.jwtSecret, { expiresIn: expire } ); }; const token = generateToken(); await User.query().where("id", user.id).update({ api_key: token }); console.log("Token generated and updated for user", user.email); console.log("Token:", token); process.exit(0); } main();