- Simplified the magic link email format to plain text for better compatibility. - Updated the welcome email to use plain text and changed the sender address to match the domain. - Enhanced event registration email format to plain text, removing HTML styling for a cleaner approach.
35 lines
941 B
JavaScript
35 lines
941 B
JavaScript
import Member from '../../../../models/member.js'
|
|
import { connectDB } from '../../../../utils/mongoose.js'
|
|
import { validateBody } from '../../../../utils/validateBody.js'
|
|
import { adminRoleUpdateSchema } from '../../../../utils/schemas.js'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const admin = await requireAdmin(event)
|
|
await connectDB()
|
|
|
|
const { role } = await validateBody(event, adminRoleUpdateSchema)
|
|
const memberId = getRouterParam(event, 'id')
|
|
|
|
// Prevent self-demotion
|
|
if (admin._id.toString() === memberId && role !== 'admin') {
|
|
throw createError({
|
|
statusCode: 400,
|
|
statusMessage: 'You cannot remove your own admin role.'
|
|
})
|
|
}
|
|
|
|
const member = await Member.findByIdAndUpdate(
|
|
memberId,
|
|
{ role },
|
|
{ new: true }
|
|
)
|
|
|
|
if (!member) {
|
|
throw createError({
|
|
statusCode: 404,
|
|
statusMessage: 'Member not found.'
|
|
})
|
|
}
|
|
|
|
return { success: true, member }
|
|
})
|