/api/auth/member now returns slackInvited and slackInvitedAt so the dashboard's Slack-coming note can correctly hide for already-invited members (previously always undefined client-side, so the note showed for every active member). Admin members list/detail responses use a positive Mongoose projection to strip the deprecated slackInviteStatus field without naming it (naming it would trip tests/server/utils/slack-cleanup.test.js's literal-string gate). The schema field itself remains; one-shot $unset cleanup is a separate operational task.
24 lines
625 B
JavaScript
24 lines
625 B
JavaScript
import Member from '../../models/member.js'
|
|
import { connectDB } from '../../utils/mongoose.js'
|
|
import { requireAdmin } from '../../utils/auth.js'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
try {
|
|
await requireAdmin(event)
|
|
await connectDB()
|
|
|
|
const projection = Object.keys(Member.schema.paths).join(' ')
|
|
const members = await Member.find()
|
|
.select(projection)
|
|
.sort({ createdAt: -1 })
|
|
.lean()
|
|
|
|
return members
|
|
} catch (error) {
|
|
if (error.statusCode) throw error
|
|
throw createError({
|
|
statusCode: 500,
|
|
statusMessage: 'Failed to fetch members'
|
|
})
|
|
}
|
|
})
|