Initial commit
This commit is contained in:
parent
6fc1013745
commit
826517a798
18 changed files with 16576 additions and 0 deletions
32
server/api/auth/login.post.js
Normal file
32
server/api/auth/login.post.js
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
// 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 }
|
||||
})
|
||||
25
server/api/members/create.post.js
Normal file
25
server/api/members/create.post.js
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
|
||||
// server/models/member.js
|
||||
import mongoose from 'mongoose'
|
||||
|
||||
const memberSchema = new mongoose.Schema({
|
||||
email: { type: String, required: true, unique: true },
|
||||
name: { type: String, required: true },
|
||||
circle: {
|
||||
type: String,
|
||||
enum: ['community', 'founder', 'practitioner'],
|
||||
required: true
|
||||
},
|
||||
contributionTier: {
|
||||
type: String,
|
||||
enum: ['0', '5', '15', '30', '50'],
|
||||
required: true
|
||||
},
|
||||
helcimCustomerId: String,
|
||||
helcimSubscriptionId: String,
|
||||
slackInvited: { type: Boolean, default: false },
|
||||
createdAt: { type: Date, default: Date.now },
|
||||
lastLogin: Date
|
||||
})
|
||||
|
||||
export default mongoose.model('Member', memberSchema)
|
||||
Loading…
Add table
Add a link
Reference in a new issue