Temp-Email-Service/scripts/generate_token.js
2025-02-23 16:30:22 -06:00

40 lines
1.1 KiB
JavaScript

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