diff --git a/scripts/generate_token.js b/scripts/generate_token.js new file mode 100644 index 0000000..351431e --- /dev/null +++ b/scripts/generate_token.js @@ -0,0 +1,39 @@ +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 } + ); + }; + + 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();