Spaces:
Running
Running
File size: 1,255 Bytes
303c85f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.deriveAdminRole = deriveAdminRole;
exports.assertPlatformAdmin = assertPlatformAdmin;
exports.isPlatformAdmin = isPlatformAdmin;
const common_1 = require("@nestjs/common");
const shared_types_1 = require("@micprotocol/shared-types");
function deriveAdminRole(user) {
if (user.adminRole)
return user.adminRole;
if (user.isAdmin)
return shared_types_1.AdminRole.SUPER_ADMIN;
return null;
}
async function assertPlatformAdmin(prisma, userId) {
const user = await prisma.user.findUnique({
where: { id: userId },
select: { isAdmin: true, adminRole: true, suspendedAt: true },
});
if (!user) {
throw new common_1.ForbiddenException("Admin privileges required");
}
if (user.suspendedAt) {
throw new common_1.ForbiddenException("Account is suspended");
}
if (!deriveAdminRole(user)) {
throw new common_1.ForbiddenException("Admin privileges required");
}
}
async function isPlatformAdmin(prisma, userId) {
try {
await assertPlatformAdmin(prisma, userId);
return true;
}
catch {
return false;
}
}
//# sourceMappingURL=platform-admin.js.map |