mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-05 13:36:01 +01:00
46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
const meta = require('../meta');
|
|
const analytics = require('../analytics');
|
|
const privileges = require('../privileges');
|
|
const groups = require('../groups');
|
|
|
|
const adminApi = module.exports;
|
|
|
|
adminApi.updateSetting = async (caller, { setting, value }) => {
|
|
const ok = await privileges.admin.can('admin:settings', caller.uid);
|
|
if (!ok) {
|
|
throw new Error('[[error:no-privileges]]');
|
|
}
|
|
|
|
await meta.configs.set(setting, value);
|
|
};
|
|
|
|
adminApi.getAnalyticsKeys = async () => {
|
|
const keys = await analytics.getKeys();
|
|
|
|
// Sort keys alphabetically
|
|
return keys.sort((a, b) => (a < b ? -1 : 1));
|
|
};
|
|
|
|
adminApi.getAnalyticsData = async (caller, { set, until, amount, units }) => {
|
|
// Default returns views from past 24 hours, by hour
|
|
if (!amount) {
|
|
if (units === 'days') {
|
|
amount = 30;
|
|
} else {
|
|
amount = 24;
|
|
}
|
|
}
|
|
const getStats = units === 'days' ? analytics.getDailyStatsForSet : analytics.getHourlyStatsForSet;
|
|
return await getStats(`analytics:${set}`, parseInt(until, 10) || Date.now(), amount);
|
|
};
|
|
|
|
adminApi.listGroups = async () => {
|
|
// N.B. Returns all groups, even hidden. Beware of leakage.
|
|
// Access control handled at controller level
|
|
|
|
const payload = await groups.getNonPrivilegeGroups('groups:createtime', 0, -1, { ephemeral: false });
|
|
return { groups: payload };
|
|
};
|