- migration 062: mimecast_tenants table (company_id, client_id/secret, account_code) - Seed Wulf (CUSA13A95) + Seubert (CUSA96A181) tenants - MimecastClient.getHeldMessages(): full pagination via meta.pagination.next cursor (API always returns 10/page regardless of pageSize param, totalCount in meta) - getMimecastClientForTenant() factory for per-tenant instantiation - GET /api/mimecast/held?tenantId=&recipient= — fetches all tenants in parallel, merges + sorts by date, returns per-tenant counts + combined messages[] - Held Mail tab on /admin/sync/mimecast (on-demand load, recipient filter, tenant badges, policy filter dropdown, DMARC/impersonation highlighted red)
22 lines
776 B
TypeScript
22 lines
776 B
TypeScript
import { NextRequest, NextResponse } from 'next/server';
|
|
import { getMimecastClient } from '@/lib/services/mimecast-client';
|
|
|
|
export async function GET(req: NextRequest) {
|
|
const emailAddress = req.nextUrl.searchParams.get('emailAddress');
|
|
const domain = req.nextUrl.searchParams.get('domain');
|
|
|
|
if (!emailAddress || !domain) {
|
|
return NextResponse.json({ error: 'emailAddress and domain are required' }, { status: 400 });
|
|
}
|
|
|
|
try {
|
|
const client = getMimecastClient();
|
|
const user = await client.getCloudUser(emailAddress, domain);
|
|
if (!user) {
|
|
return NextResponse.json({ found: false });
|
|
}
|
|
return NextResponse.json({ found: true, user });
|
|
} catch (err: any) {
|
|
return NextResponse.json({ error: err.message }, { status: 500 });
|
|
}
|
|
}
|