Files
optima/api/utils/generate24HourAccessToken.ts
T
2026-04-07 23:56:31 +00:00

52 lines
1.2 KiB
TypeScript

import jwt from "jsonwebtoken";
import { accessTokenPrivateKey, prisma } from "../src/constants";
await (async () => {
const userIdentifier = Bun.argv[2]?.trim();
if (Bun.argv.length !== 3 || !userIdentifier) {
console.error(
"1 argument expected.\nFormat: bun run utils:gen_access_token {user_identifier}"
);
process.exit(1);
}
const user = await prisma.user.findFirst({
where: {
OR: [
{ id: userIdentifier },
{ login: userIdentifier },
{ email: userIdentifier },
{ userId: userIdentifier },
],
},
});
if (!user) {
console.error(`User with identifier '${userIdentifier}' doesn't exist.`);
process.exit(1);
}
// A backing session is required because access-token validation resolves by sessionKey.
const session = await prisma.session.create({
data: {
userId: user.id,
expires: new Date(Date.now() + 24 * 60 * 60 * 1000),
},
});
const token = jwt.sign(
{
sessionKey: session.sessionKey,
userID: user.id,
},
accessTokenPrivateKey,
{
algorithm: "RS256",
expiresIn: "24h",
}
);
console.log(token);
process.exit(0);
})();