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