Features Endpoint for Dashboard.
This commit is contained in:
107
src/features.js
Normal file
107
src/features.js
Normal file
@@ -0,0 +1,107 @@
|
||||
/**
|
||||
* features.js
|
||||
* Feature config file that holds information on the features that are currently
|
||||
* available on Parse Server. This is primarily created to work with an UI interface
|
||||
* like the web dashboard. The list of features will change depending on the your
|
||||
* app, choice of adapter as well as Parse Server version. This approach will enable
|
||||
* the dashboard to be built independently and still support these use cases.
|
||||
*
|
||||
*
|
||||
* Default features and feature options are listed in the features object.
|
||||
*
|
||||
* featureSwitch is a convenient way to turn on/off features without changing the config
|
||||
*
|
||||
* Features that use Adapters should specify the feature options through
|
||||
* the setFeature method in your controller and feature
|
||||
* Reference PushController and ParsePushAdapter as an example.
|
||||
*
|
||||
* NOTE: When adding new endpoints be sure to update this list both (features, featureSwitch)
|
||||
* if you are planning to have a UI consume it.
|
||||
*/
|
||||
|
||||
// default features
|
||||
let features = {
|
||||
analytics: {
|
||||
slowQueries: false,
|
||||
performanceAnalysis: false,
|
||||
retentionAnalysis: false,
|
||||
},
|
||||
classes: {},
|
||||
files: {},
|
||||
functions: {},
|
||||
globalConfig: {
|
||||
create: true,
|
||||
read: true,
|
||||
update: true,
|
||||
delete: true,
|
||||
},
|
||||
hooks: {
|
||||
create: false,
|
||||
read: false,
|
||||
update: false,
|
||||
delete: false,
|
||||
},
|
||||
iapValidation: {},
|
||||
installations: {},
|
||||
logs: {
|
||||
info: true,
|
||||
error: true,
|
||||
},
|
||||
publicAPI: {},
|
||||
push: {},
|
||||
roles: {},
|
||||
schemas: {
|
||||
addField: true,
|
||||
removeField: true,
|
||||
addClass: true,
|
||||
removeClass: true,
|
||||
clearAllDataFromClass: false,
|
||||
exportClass: false,
|
||||
},
|
||||
sessions: {},
|
||||
users: {},
|
||||
};
|
||||
|
||||
// master switch for features
|
||||
let featuresSwitch = {
|
||||
analytics: true,
|
||||
classes: true,
|
||||
files: true,
|
||||
functions: true,
|
||||
globalConfig: true,
|
||||
hooks: true,
|
||||
iapValidation: true,
|
||||
installations: true,
|
||||
logs: true,
|
||||
publicAPI: true,
|
||||
push: true,
|
||||
roles: true,
|
||||
schemas: true,
|
||||
sessions: true,
|
||||
users: true,
|
||||
};
|
||||
|
||||
/**
|
||||
* set feature config options
|
||||
*/
|
||||
function setFeature(key, value) {
|
||||
features[key] = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* get feature config options
|
||||
*/
|
||||
function getFeatures() {
|
||||
let result = {};
|
||||
Object.keys(features).forEach((key) => {
|
||||
if (featuresSwitch[key]) {
|
||||
result[key] = features[key];
|
||||
}
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getFeatures,
|
||||
setFeature,
|
||||
};
|
||||
Reference in New Issue
Block a user