mirror of
https://github.com/strapi/strapi.git
synced 2025-07-25 09:56:53 +00:00
162 lines
3.0 KiB
JavaScript
162 lines
3.0 KiB
JavaScript
'use strict';
|
|
|
|
const getDefaultContentTypeConfig = () => ({
|
|
enabled: true,
|
|
|
|
mutations: true,
|
|
queries: true,
|
|
|
|
disabledActions: [],
|
|
fields: new Map(),
|
|
});
|
|
|
|
const getDefaultFieldConfig = () => ({
|
|
enabled: true,
|
|
|
|
input: true,
|
|
output: true,
|
|
|
|
filters: true,
|
|
});
|
|
|
|
const ALL_ACTIONS = '*';
|
|
|
|
module.exports = () => {
|
|
const configs = new Map();
|
|
|
|
return (uid) => {
|
|
if (!configs.has(uid)) {
|
|
configs.set(uid, getDefaultContentTypeConfig());
|
|
}
|
|
|
|
return {
|
|
isEnabled() {
|
|
return configs.get(uid).enabled;
|
|
},
|
|
|
|
isDisabled() {
|
|
return !this.isEnabled();
|
|
},
|
|
|
|
areQueriesEnabled() {
|
|
return configs.get(uid).queries;
|
|
},
|
|
|
|
areQueriesDisabled() {
|
|
return !this.areQueriesEnabled();
|
|
},
|
|
|
|
areMutationsEnabled() {
|
|
return configs.get(uid).mutations;
|
|
},
|
|
|
|
areMutationsDisabled() {
|
|
return !this.areMutationsEnabled();
|
|
},
|
|
|
|
isActionEnabled(action) {
|
|
const matchingActions = [action, ALL_ACTIONS];
|
|
|
|
return configs
|
|
.get(uid)
|
|
.disabledActions.every((action) => !matchingActions.includes(action));
|
|
},
|
|
|
|
isActionDisabled(action) {
|
|
return !this.isActionEnabled(action);
|
|
},
|
|
|
|
disable() {
|
|
configs.get(uid).enabled = false;
|
|
|
|
return this;
|
|
},
|
|
|
|
disableQueries() {
|
|
configs.get(uid).queries = false;
|
|
|
|
return this;
|
|
},
|
|
|
|
disableMutations() {
|
|
configs.get(uid).mutations = false;
|
|
|
|
return this;
|
|
},
|
|
|
|
disableAction(action) {
|
|
const config = configs.get(uid);
|
|
|
|
if (!config.disabledActions.includes(action)) {
|
|
config.disabledActions.push(action);
|
|
}
|
|
|
|
return this;
|
|
},
|
|
|
|
disableActions(actions = []) {
|
|
actions.forEach((action) => this.disableAction(action));
|
|
|
|
return this;
|
|
},
|
|
|
|
field(fieldName) {
|
|
const { fields } = configs.get(uid);
|
|
|
|
if (!fields.has(fieldName)) {
|
|
fields.set(fieldName, getDefaultFieldConfig());
|
|
}
|
|
|
|
return {
|
|
isEnabled() {
|
|
return fields.get(fieldName).enabled;
|
|
},
|
|
|
|
hasInputEnabled() {
|
|
return fields.get(fieldName).input;
|
|
},
|
|
|
|
hasOutputEnabled() {
|
|
return fields.get(fieldName).output;
|
|
},
|
|
|
|
hasFiltersEnabeld() {
|
|
return fields.get(fieldName).filters;
|
|
},
|
|
|
|
disable() {
|
|
fields.set(fieldName, {
|
|
enabled: false,
|
|
|
|
output: false,
|
|
input: false,
|
|
|
|
filters: false,
|
|
});
|
|
|
|
return this;
|
|
},
|
|
|
|
disableOutput() {
|
|
fields.get(fieldName).output = false;
|
|
|
|
return this;
|
|
},
|
|
|
|
disableInput() {
|
|
fields.get(fieldName).input = false;
|
|
|
|
return this;
|
|
},
|
|
|
|
disableFilters() {
|
|
fields.get(fieldName).filters = false;
|
|
|
|
return this;
|
|
},
|
|
};
|
|
},
|
|
};
|
|
};
|
|
};
|