import { NextRequest, NextResponse } from 'next/server'; import { requireRole, createUser } from '@/lib/auth'; import { db } from '@/lib/db'; export async function GET() { try { await requireRole('admin'); const { rows } = await db.query('SELECT id, username, role, created_at FROM users ORDER BY created_at DESC'); return NextResponse.json({ data: rows }); } catch (err: any) { return NextResponse.json({ error: err.message || 'Failed to fetch users' }, { status: err.message === 'Unauthorized' ? 401 : 500 }); } } export async function POST(request: NextRequest) { try { await requireRole('admin'); const body = await request.json(); const { username, password, role = 'user' } = body; if (!username || !password) { return NextResponse.json({ error: 'Username and password are required' }, { status: 400 }); } if (role !== 'admin' && role !== 'user') { return NextResponse.json({ error: 'Role must be admin or user' }, { status: 400 }); } const user = await createUser(username, password, role as 'admin' | 'user'); return NextResponse.json({ ok: true, user: { id: user.id, username: user.username, role: user.role } }); } catch (err: any) { return NextResponse.json({ error: err.message || 'Failed to create user' }, { status: err.message === 'Unauthorized' ? 401 : 500 }); } }