Files
bot/apps/viewer/src/helpers/authenticateUser.ts
2023-09-20 15:42:34 +02:00

20 lines
586 B
TypeScript

import { User } from '@typebot.io/prisma'
import { NextApiRequest } from 'next'
import prisma from '@typebot.io/lib/prisma'
export const authenticateUser = async (
req: NextApiRequest
): Promise<User | undefined> => authenticateByToken(extractBearerToken(req))
const authenticateByToken = async (
apiToken?: string
): Promise<User | undefined> => {
if (!apiToken) return
return (await prisma.user.findFirst({
where: { apiTokens: { some: { token: apiToken } } },
})) as User
}
const extractBearerToken = (req: NextApiRequest) =>
req.headers['authorization']?.slice(7)