-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.js
More file actions
82 lines (72 loc) · 2.15 KB
/
Copy pathutils.js
File metadata and controls
82 lines (72 loc) · 2.15 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
const repo = require('./repositories/roles_repository');
const { loadSecrets } = require("./aws/ssm-helper");
const config = require('config');
const logger = require('./logger')(__filename);
let rolesCache = null;
const ROLE_NAMES = {
admin: 'admin',
mentor: 'mentor',
member: 'member',
};
async function getFirebaseSdkServiceAccount() {
let serviceAccount = null;
try {
if (process.env.ENVIRONMENT === "local") {
serviceAccount = require("./serviceAccountKey.json");
}
else {
const awsConfig = config.aws;
const credentials = await loadSecrets(awsConfig.param_store_region, ['/catbytes_webplatform/fb_serviceAccountKey'], true);
const jsonFile = credentials['fb_serviceAccountKey'];
serviceAccount = JSON.parse(jsonFile);
}
}
catch (err) {
logger.error(err, "Error getting service account");
throw new Error("Failed to retrieve service account");
}
return serviceAccount;
}
async function loadRolesIntoMemory() {
try {
if (!rolesCache) {
const roles = await repo.getAllRoles();
rolesCache = roles.reduce((acc, role) => {
acc[role.role_name] = role.id;
if (!isRoleExists(role.role_name)) {
logger.warn(`Role ${role.role_name} is in database, but is not in the ROLE_NAMES enum.`);
}
return acc;
}, {});
logger.debug(rolesCache, 'Roles loaded into memory');
}
} catch (err) {
logger.error(err, "Error loading roles");
throw new Error("Failed to initialize roles");
}
}
function getRole(roleName) {
if (!rolesCache) {
throw new Error("Roles are not loaded");
}
return rolesCache[roleName];
}
function isRoleExists(role) {
return Object.values(ROLE_NAMES).includes(role);
}
const APPL_STATUSES = {
approved: "approved",
rejected: "rejected",
pending: "pending",
};
const MENTOR_STATUSES = {
active: 'active',
inactive: 'inactive',
rejected: 'rejected',
pending: 'pending',
};
const ALLOWED_MENTOR_UPDATES = ['contact', 'about', 'tags'];
module.exports = {
APPL_STATUSES, MENTOR_STATUSES, ROLE_NAMES, ALLOWED_MENTOR_UPDATES,
isRoleExists, loadRolesIntoMemory, getRole, getFirebaseSdkServiceAccount
};