← back to StudentLoanTracker

src/app/api/admin/route.ts

38 lines

import { NextRequest, NextResponse } from 'next/server';

function isAuthorized(request: NextRequest): boolean {
  const authHeader = request.headers.get('authorization');
  if (!authHeader || !authHeader.startsWith('Basic ')) {
    return false;
  }

  const base64 = authHeader.slice(6);
  const decoded = Buffer.from(base64, 'base64').toString('utf-8');
  const [username, password] = decoded.split(':');

  return username === 'admin' && password === process.env.ADMIN_PASSWORD;
}

export async function GET(request: NextRequest) {
  if (!isAuthorized(request)) {
    return NextResponse.json(
      { success: false, error: 'Unauthorized' },
      { status: 401, headers: { 'WWW-Authenticate': 'Basic realm="Admin"' } }
    );
  }

  // TODO: Return admin dashboard data
  // TODO: Anonymous usage stats, servicer count, account count, system health

  return NextResponse.json({
    success: true,
    message: 'Admin API - system health and anonymous analytics',
    stats: {
      servicer_count: 0,
      account_count: 0,
      calculator_runs_today: 0,
      uptime: process.uptime(),
    },
  });
}