import prisma from "../../prisma" import type { Player, Token, TokenType } from "@prisma/client" import jwt from "jsonwebtoken" export interface RawToken { value: string type: TokenType } export interface IdToken { id: string type: TokenType } export const tokenLifetime = { REFRESH: 172800, ACCESS: 15, } export default async function createTokenDB( player: Player, newTokenType: TokenType ) { // Create token entry in DB const newTokenDB = await prisma.token.create({ data: { type: newTokenType, // expires: new Date(Date.now() + tokenLifetime[newTokenType] + "000"), owner: { connect: { id: player.id, }, }, }, }) // Sign a new access token const newToken = jwt.sign( { id: newTokenDB.id }, process.env.TOKEN_SECRET as string, { expiresIn: tokenLifetime[newTokenType] } ) return { newToken: { value: newToken, type: newTokenType }, newTokenDB } }