diff --git a/src/agents/agents.service.ts b/src/agents/agents.service.ts index c523204..48cd8c3 100644 --- a/src/agents/agents.service.ts +++ b/src/agents/agents.service.ts @@ -155,12 +155,8 @@ export class AgentsService { return { ...profile, user: userWithoutPrefs }; } - // Block access to non-paid agents (PAST_DUE included as grace period during Stripe retries) - const visibleStatuses = ['ACTIVE', 'TRIALING', 'PAST_DUE']; - if (!profile.subscriptionStatus || !visibleStatuses.includes(profile.subscriptionStatus)) { - throw new NotFoundException('Agent profile not found'); - } - + // Payment is no longer a visibility gate — admin-approved profiles are + // visible regardless of subscription status. if (visibility === 'private') { throw new ForbiddenException('This profile is not available'); } @@ -311,12 +307,11 @@ export class AgentsService { const skip = (page - 1) * limit; - // Build where clause — only show active, admin-approved, paid subscribers in search - // PAST_DUE included as grace period (Stripe is retrying payment) + // Build where clause — show all active, admin-approved profiles. + // Subscription status is no longer a gate; admin can approve without payment. const where: Prisma.AgentProfileWhereInput = { verificationStatus: 'APPROVED', user: { status: 'ACTIVE' }, - subscriptionStatus: { in: ['ACTIVE', 'TRIALING', 'PAST_DUE'] }, }; if (search) { diff --git a/src/users/users.service.ts b/src/users/users.service.ts index 60c8713..7150b34 100644 --- a/src/users/users.service.ts +++ b/src/users/users.service.ts @@ -299,6 +299,8 @@ export class UsersService { verificationNote: user.agentProfile.verificationNote, verifiedAt: user.agentProfile.verifiedAt, verifiedBy: user.agentProfile.verifiedBy, + // Subscription / payment status (denormalized from AgentSubscription) + subscriptionStatus: user.agentProfile.subscriptionStatus, }, }; }