Skip to content

Commit 4c09d17

Browse files
Merge pull request #34 from WorldHealthOrganization/2.50.3
feat: update version and dependencies, add API key functionality
2 parents 20262da + 051034e commit 4c09d17

10 files changed

Lines changed: 4376 additions & 1271 deletions

File tree

app/settings.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ const configureIPCMain = () => {
114114
(callback) => {
115115
// retrieve again api settings
116116
const currentApiSettings = settingsController.retrieveAPISettings();
117+
const currentClientSettings = settingsController.retrieveClientSettings();
117118

118119
// enable config rewrite
119120
currentApiSettings.enableConfigRewrite = apiSettings.enableConfigRewrite;
@@ -125,12 +126,23 @@ const configureIPCMain = () => {
125126
currentApiSettings.public.port = apiSettings.public.port ?
126127
parseInt(apiSettings.public.port) :
127128
'';
129+
const url = `${apiSettings.public.protocol}://${apiSettings.public.host}${apiSettings.public.port ? ':' + apiSettings.public.port : ''}`;
130+
131+
// Ensure it's not already in the whitelist before adding
132+
if (!currentApiSettings.cors.whitelist.includes(url)) {
133+
currentApiSettings.cors.whitelist.push(url);
134+
}
135+
currentApiSettings.apiKey = apiSettings.apiKey;
136+
currentClientSettings.apiKey = apiSettings.apiKey;
128137
}
129138

130139
// save settings
131140
if (!settingsController.updateAPISettings(currentApiSettings)) {
132141
return callback('Error updating api settings...');
133142
}
143+
if (!settingsController.updateClientSettings(currentClientSettings)) {
144+
return callback('Error updating client settings...');
145+
}
134146

135147
// finished
136148
callback();

controllers/ipcMain.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ const initSettingsEvents = (events) => {
5555
const apiSettings = settings.retrieveAPISettings() || {};
5656
event.sender.send('getPublicInfo-reply', {
5757
enableConfigRewrite: apiSettings.enableConfigRewrite,
58-
public: apiSettings.public
58+
public: apiSettings.public,
59+
apiKey: apiSettings.apiKey || ''
5960
});
6061
});
6162

controllers/settings.js

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const AppPaths = require('./../utils/paths');
1010
const settingsFile = AppPaths.desktopApp.settingsFile;
1111
const winCfgPath = AppPaths.desktopApp.winCfgPath;
1212
const apiConfigPath = AppPaths.apiConfigPath;
13+
const clientConfigPath = AppPaths.clientConfigPath;
1314

1415
const encryptionController = require('./encryption');
1516

@@ -254,6 +255,32 @@ const retrieveWinSettings = () => {
254255
return cachedWinSettings;
255256
};
256257

258+
/**
259+
* Retrieve client settings ( runtime-config.json )
260+
*/
261+
const retrieveClientSettings = () => {
262+
// no api settings ?
263+
if (!clientConfigPath) {
264+
return {};
265+
}
266+
267+
// load settings
268+
let clientConfig = {};
269+
try {
270+
// check if api config file exists and
271+
if (fs.existsSync(clientConfigPath)) {
272+
// read api settings
273+
const clientConfigData = fs.readFileSync(clientConfigPath, 'utf8');
274+
clientConfig = JSON.parse(clientConfigData);
275+
}
276+
} catch (e) {
277+
// NOTHING
278+
}
279+
280+
// finished loading api settings
281+
return clientConfig;
282+
};
283+
257284
/**
258285
* Retrieve api settings ( config.json )
259286
*/
@@ -280,6 +307,36 @@ const retrieveAPISettings = () => {
280307
return apiConfig;
281308
};
282309

310+
/**
311+
* Update client settings ( runtime-config.json )
312+
* @return {boolean} True if saved with success, false otherwise
313+
*/
314+
const updateClientSettings = (settings) => {
315+
// no settings ?
316+
if (!clientConfigPath) {
317+
return false;
318+
}
319+
320+
// convert settings to string if necessary
321+
settings = typeof settings === 'string' ?
322+
settings :
323+
JSON.stringify(settings, null, 2);
324+
325+
// save settings
326+
try {
327+
fs.writeFileSync(clientConfigPath, settings);
328+
} catch (e) {
329+
// log error
330+
logger.error(`Error saving client settings: ${e}`);
331+
332+
// an error occurred
333+
return false;
334+
}
335+
336+
// settings saved
337+
return true;
338+
};
339+
283340
/**
284341
* Update api settings ( config.json )
285342
* @return {boolean} True if saved with success, false otherwise
@@ -355,7 +412,9 @@ module.exports = {
355412
getEncryptionCapability,
356413
retrieveWinSettings,
357414
retrieveAPISettings,
415+
retrieveClientSettings,
358416
updateAPISettings,
417+
updateClientSettings,
359418
runMongoAsAService,
360419
runGoDataAPIAsAService
361420
};

go-data/api

Submodule api updated from 174d258 to dd19067

go-data/frontend

Submodule frontend updated 588 files

0 commit comments

Comments
 (0)