"use server"; import { getServerSession } from "../../../api/auth/[...nextauth]/auth"; import { Service } from "../page"; import { PrismaClient } from "@repo/db"; const prisma = new PrismaClient(); export const generateToken = async (service: Service) => { const session = await getServerSession(); if (!session) return null; const key = await crypto.subtle.generateKey( { name: "HMAC", hash: "SHA-256" }, true, ["sign"], ); const exportedKey = await crypto.subtle.exportKey("raw", key); const accessToken = Array.from(new Uint8Array(exportedKey)) .map((byte) => byte.toString(16).padStart(2, "0")) .join(""); const code = await prisma.oAuthToken.create({ data: { clientId: service.id, userId: session.user.id, accessToken: accessToken, }, }); return code; };