47 lines
1.8 KiB
JavaScript
47 lines
1.8 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.requireActiveSubscription = requireActiveSubscription;
|
|
exports.requireFullAccess = requireFullAccess;
|
|
const prisma_1 = require("../../lib/prisma");
|
|
const subscription_policy_1 = require("./subscription.policy");
|
|
async function requireActiveSubscription(req, res, next) {
|
|
const companyId = req.companyId;
|
|
if (!companyId)
|
|
return res.status(401).json({ error: 'unauthenticated' });
|
|
const sub = await prisma_1.prisma.subscription.findUnique({ where: { companyId } });
|
|
const status = sub?.status ?? 'EXPIRED';
|
|
const accessLevel = (0, subscription_policy_1.getAccessLevel)(status);
|
|
if (!(0, subscription_policy_1.hasAnyAccess)(status)) {
|
|
return res.status(403).json({
|
|
error: 'subscription_required',
|
|
message: 'Your subscription has ended. Please reactivate to continue.',
|
|
subscriptionStatus: status,
|
|
accessLevel,
|
|
});
|
|
}
|
|
;
|
|
req.subscriptionStatus = status;
|
|
req.accessLevel = accessLevel;
|
|
next();
|
|
}
|
|
async function requireFullAccess(req, res, next) {
|
|
const companyId = req.companyId;
|
|
if (!companyId)
|
|
return res.status(401).json({ error: 'unauthenticated' });
|
|
const sub = await prisma_1.prisma.subscription.findUnique({ where: { companyId } });
|
|
const status = sub?.status ?? 'EXPIRED';
|
|
const accessLevel = (0, subscription_policy_1.getAccessLevel)(status);
|
|
if (accessLevel !== 'full') {
|
|
return res.status(403).json({
|
|
error: 'insufficient_access',
|
|
message: 'This action requires an active subscription.',
|
|
subscriptionStatus: status,
|
|
accessLevel,
|
|
});
|
|
}
|
|
;
|
|
req.subscriptionStatus = status;
|
|
req.accessLevel = accessLevel;
|
|
next();
|
|
}
|
|
//# sourceMappingURL=subscription.entitlement.js.map
|