Skip to content

Commit c2ee6e0

Browse files
committed
feat(api): enhance subscription middleware (SSC-16)
- Add upgradeUrl to subscription error responses - Create requireActiveSubscription() middleware - Check for ACTIVE or TRIALING status - Provide clear error messages with upgrade paths - Support flexible subscription status checking This enables better subscription enforcement across routes. Relates to SSC-16: Payment Processing & Subscription Management
1 parent bbf144c commit c2ee6e0

1 file changed

Lines changed: 26 additions & 1 deletion

File tree

apps/api/src/middleware/auth.middleware.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,32 @@ export const requireSubscription = (tiers: string[]) => {
6262
res.status(403).json({
6363
error: 'This feature requires a premium subscription',
6464
requiredTiers: tiers,
65-
currentTier: req.user.subscriptionTier
65+
currentTier: req.user.subscriptionTier,
66+
upgradeUrl: '/pricing',
67+
});
68+
return;
69+
}
70+
71+
next();
72+
};
73+
};
74+
75+
// New middleware: Require active subscription
76+
export const requireActiveSubscription = () => {
77+
return async (req: Request, res: Response, next: NextFunction): Promise<void> => {
78+
if (!req.user) {
79+
res.status(401).json({ error: 'Authentication required' });
80+
return;
81+
}
82+
83+
const subscriptionStatuses = ['ACTIVE', 'TRIALING'];
84+
const userStatus = req.user.subscriptionStatus || 'INACTIVE';
85+
86+
if (!subscriptionStatuses.includes(userStatus)) {
87+
res.status(403).json({
88+
error: 'This feature requires an active subscription',
89+
currentStatus: userStatus,
90+
upgradeUrl: '/pricing',
6691
});
6792
return;
6893
}

0 commit comments

Comments
 (0)