ghostguild-org/server/api/auth/login.post.js

32 lines
No EOL
771 B
JavaScript

// server/api/auth/login.post.js
import jwt from 'jsonwebtoken'
import Member from '~/server/models/member'
export default defineEventHandler(async (event) => {
const { email } = await readBody(event)
const member = await Member.findOne({ email })
if (!member) {
throw createError({ statusCode: 404 })
}
// Send magic link via Resend
const token = jwt.sign(
{ memberId: member._id },
process.env.JWT_SECRET,
{ expiresIn: '7d' }
)
await resend.emails.send({
from: 'Ghost Guild <noreply@ghostguild.org>',
to: email,
subject: 'Your Ghost Guild login link',
html: `
<a href="https://ghostguild.org/auth/verify?token=${token}">
Click here to log in
</a>
`
})
return { success: true }
})