magiclink.ts37 lines · main
1import { NextApiRequest, NextApiResponse } from 'next'
2
3import { fetchPost } from '@/data/fetchers'
4import { constructHeaders } from '@/lib/api/apiHelpers'
5import apiWrapper from '@/lib/api/apiWrapper'
6
7export default (req: NextApiRequest, res: NextApiResponse) => apiWrapper(req, res, handler)
8
9async function handler(req: NextApiRequest, res: NextApiResponse) {
10 const { method } = req
11
12 switch (method) {
13 case 'POST':
14 return handlePost(req, res)
15 default:
16 res.setHeader('Allow', ['POST'])
17 res.status(405).json({ data: null, error: { message: `Method ${method} Not Allowed` } })
18 }
19}
20
21const handlePost = async (req: NextApiRequest, res: NextApiResponse) => {
22 const headers = constructHeaders({
23 'Content-Type': 'application/json',
24 Accept: 'application/json',
25 Authorization: `Bearer ${process.env.BRIVEN_SERVICE_KEY}`,
26 })
27 const url = `${process.env.BRIVEN_URL}/auth/v1/magiclink`
28 const payload = { email: req.body.email }
29
30 const response = await fetchPost(url, payload, { headers })
31 if (response.error) {
32 const { code, message } = response.error
33 return res.status(code).json({ message })
34 } else {
35 return res.status(200).json(response)
36 }
37}