Migrate the entire admin section from the dark guild-* Tailwind theme to the zine design system (dashed borders, CSS custom properties, Brygada 1918 + Commit Mono, cream/dark mode palette). - Replace admin top-nav layout with sidebar matching default layout - Reskin dashboard, members, events, series management pages - Reskin events/create and series/create form pages - Add dev-only test login endpoint (GET /api/dev/test-login) - Redirect duplicate admin/dashboard.vue to /admin - Update CLAUDE.md design system docs
42 lines
1 KiB
JavaScript
42 lines
1 KiB
JavaScript
import jwt from 'jsonwebtoken'
|
|
import Member from '../../models/member.js'
|
|
import { connectDB } from '../../utils/mongoose.js'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
// Only allow in development
|
|
if (process.env.NODE_ENV === 'production') {
|
|
throw createError({ statusCode: 404, statusMessage: 'Not found' })
|
|
}
|
|
|
|
await connectDB()
|
|
|
|
// Find or create a test admin user
|
|
let member = await Member.findOne({ email: 'test-admin@ghostguild.dev' })
|
|
|
|
if (!member) {
|
|
member = await Member.create({
|
|
email: 'test-admin@ghostguild.dev',
|
|
name: 'Test Admin',
|
|
circle: 'founder',
|
|
contributionTier: '0',
|
|
role: 'admin',
|
|
status: 'active',
|
|
})
|
|
}
|
|
|
|
const config = useRuntimeConfig(event)
|
|
const token = jwt.sign(
|
|
{ memberId: member._id, email: member.email },
|
|
config.jwtSecret,
|
|
{ expiresIn: '7d' }
|
|
)
|
|
|
|
setCookie(event, 'auth-token', token, {
|
|
httpOnly: true,
|
|
secure: false,
|
|
sameSite: 'lax',
|
|
maxAge: 60 * 60 * 24 * 7,
|
|
})
|
|
|
|
await sendRedirect(event, '/admin', 302)
|
|
})
|