[ML] removing unnecessary privileges provider (#20671)

This commit is contained in:
James Gowdy 2018-07-12 09:31:23 +01:00 committed by GitHub
parent 65081ccdce
commit da1acd0367
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 118 additions and 128 deletions

View file

@ -6,16 +6,14 @@
import { privilegesProvider } from 'plugins/ml/privilege/get_privileges';
import { getPrivileges } from 'plugins/ml/privilege/get_privileges';
import { getLicenseHasExpired } from 'plugins/ml/license/check_license';
let privileges = {};
export function checkGetJobsPrivilege(Private, Promise, kbnUrl) {
const mlPrivilegeService = Private(privilegesProvider);
return new Promise((resolve, reject) => {
mlPrivilegeService.getPrivileges()
getPrivileges()
.then((priv) => {
privileges = priv;
// the minimum privilege for using ML is being able to get the jobs list.
@ -31,10 +29,8 @@ export function checkGetJobsPrivilege(Private, Promise, kbnUrl) {
}
export function checkCreateJobsPrivilege(Private, Promise, kbnUrl) {
const mlPrivilegeService = Private(privilegesProvider);
return new Promise((resolve, reject) => {
mlPrivilegeService.getPrivileges()
getPrivileges()
.then((priv) => {
privileges = priv;
if (privileges.canCreateJob) {

View file

@ -7,132 +7,126 @@
import { ml } from 'plugins/ml/services/ml_api_service';
export function privilegesProvider() {
export function getPrivileges() {
const privileges = {
canGetJobs: false,
canCreateJob: false,
canDeleteJob: false,
canOpenJob: false,
canCloseJob: false,
canForecastJob: false,
canGetDatafeeds: false,
canStartStopDatafeed: false,
canUpdateJob: false,
canUpdateDatafeed: false,
canPreviewDatafeed: false,
canCreateCalendar: false,
canDeleteCalendar: false,
};
function getPrivileges() {
const privileges = {
canGetJobs: false,
canCreateJob: false,
canDeleteJob: false,
canOpenJob: false,
canCloseJob: false,
canForecastJob: false,
canGetDatafeeds: false,
canStartStopDatafeed: false,
canUpdateJob: false,
canUpdateDatafeed: false,
canPreviewDatafeed: false,
canCreateCalendar: false,
canDeleteCalendar: false,
return new Promise((resolve, reject) => {
const priv = {
cluster: [
'cluster:monitor/xpack/ml/job/get',
'cluster:monitor/xpack/ml/job/stats/get',
'cluster:monitor/xpack/ml/datafeeds/get',
'cluster:monitor/xpack/ml/datafeeds/stats/get',
'cluster:admin/xpack/ml/job/put',
'cluster:admin/xpack/ml/job/delete',
'cluster:admin/xpack/ml/job/update',
'cluster:admin/xpack/ml/job/open',
'cluster:admin/xpack/ml/job/close',
'cluster:admin/xpack/ml/job/forecast',
'cluster:admin/xpack/ml/datafeeds/put',
'cluster:admin/xpack/ml/datafeeds/delete',
'cluster:admin/xpack/ml/datafeeds/start',
'cluster:admin/xpack/ml/datafeeds/stop',
'cluster:admin/xpack/ml/datafeeds/update',
'cluster:admin/xpack/ml/datafeeds/preview',
'cluster:admin/xpack/ml/calendars/put',
'cluster:admin/xpack/ml/calendars/delete',
'cluster:admin/xpack/ml/calendars/jobs/update',
'cluster:admin/xpack/ml/calendars/events/post',
'cluster:admin/xpack/ml/calendars/events/delete',
]
};
return new Promise((resolve, reject) => {
const priv = {
cluster: [
'cluster:monitor/xpack/ml/job/get',
'cluster:monitor/xpack/ml/job/stats/get',
'cluster:monitor/xpack/ml/datafeeds/get',
'cluster:monitor/xpack/ml/datafeeds/stats/get',
'cluster:admin/xpack/ml/job/put',
'cluster:admin/xpack/ml/job/delete',
'cluster:admin/xpack/ml/job/update',
'cluster:admin/xpack/ml/job/open',
'cluster:admin/xpack/ml/job/close',
'cluster:admin/xpack/ml/job/forecast',
'cluster:admin/xpack/ml/datafeeds/put',
'cluster:admin/xpack/ml/datafeeds/delete',
'cluster:admin/xpack/ml/datafeeds/start',
'cluster:admin/xpack/ml/datafeeds/stop',
'cluster:admin/xpack/ml/datafeeds/update',
'cluster:admin/xpack/ml/datafeeds/preview',
'cluster:admin/xpack/ml/calendars/put',
'cluster:admin/xpack/ml/calendars/delete',
'cluster:admin/xpack/ml/calendars/jobs/update',
'cluster:admin/xpack/ml/calendars/events/post',
'cluster:admin/xpack/ml/calendars/events/delete',
]
};
ml.checkPrivilege(priv)
.then((resp) => {
ml.checkPrivilege(priv)
.then((resp) => {
// if security has been disabled, securityDisabled is returned from the endpoint
// therefore set all privileges to true
if (resp.securityDisabled) {
Object.keys(privileges).forEach(k => privileges[k] = true);
} else {
if (resp.cluster['cluster:monitor/xpack/ml/job/get'] &&
resp.cluster['cluster:monitor/xpack/ml/job/stats/get']) {
privileges.canGetJobs = true;
}
if (resp.cluster['cluster:monitor/xpack/ml/datafeeds/get'] &&
resp.cluster['cluster:monitor/xpack/ml/datafeeds/stats/get']) {
privileges.canGetDatafeeds = true;
}
if (resp.cluster['cluster:admin/xpack/ml/job/put'] &&
resp.cluster['cluster:admin/xpack/ml/job/open'] &&
resp.cluster['cluster:admin/xpack/ml/datafeeds/put']) {
privileges.canCreateJob = true;
}
if (resp.cluster['cluster:admin/xpack/ml/job/update']) {
privileges.canUpdateJob = true;
}
if (resp.cluster['cluster:admin/xpack/ml/job/open']) {
privileges.canOpenJob = true;
}
if (resp.cluster['cluster:admin/xpack/ml/job/close']) {
privileges.canCloseJob = true;
}
if (resp.cluster['cluster:admin/xpack/ml/job/forecast']) {
privileges.canForecastJob = true;
}
if (resp.cluster['cluster:admin/xpack/ml/job/delete'] &&
resp.cluster['cluster:admin/xpack/ml/datafeeds/delete']) {
privileges.canDeleteJob = true;
}
if (resp.cluster['cluster:admin/xpack/ml/job/open'] &&
resp.cluster['cluster:admin/xpack/ml/datafeeds/start'] &&
resp.cluster['cluster:admin/xpack/ml/datafeeds/stop']) {
privileges.canStartStopDatafeed = true;
}
if (resp.cluster['cluster:admin/xpack/ml/datafeeds/update']) {
privileges.canUpdateDatafeed = true;
}
if (resp.cluster['cluster:admin/xpack/ml/datafeeds/preview']) {
privileges.canPreviewDatafeed = true;
}
if (resp.cluster['cluster:admin/xpack/ml/calendars/put'] &&
resp.cluster['cluster:admin/xpack/ml/calendars/jobs/update'] &&
resp.cluster['cluster:admin/xpack/ml/calendars/events/post']) {
privileges.canCreateCalendar = true;
}
if (resp.cluster['cluster:admin/xpack/ml/calendars/delete'] &&
resp.cluster['cluster:admin/xpack/ml/calendars/events/delete']) {
privileges.canDeleteCalendar = true;
}
// if security has been disabled, securityDisabled is returned from the endpoint
// therefore set all privileges to true
if (resp.securityDisabled) {
Object.keys(privileges).forEach(k => privileges[k] = true);
} else {
if (resp.cluster['cluster:monitor/xpack/ml/job/get'] &&
resp.cluster['cluster:monitor/xpack/ml/job/stats/get']) {
privileges.canGetJobs = true;
}
resolve(privileges);
})
.catch(() => {
reject(privileges);
});
});
}
if (resp.cluster['cluster:monitor/xpack/ml/datafeeds/get'] &&
resp.cluster['cluster:monitor/xpack/ml/datafeeds/stats/get']) {
privileges.canGetDatafeeds = true;
}
return {
getPrivileges
};
if (resp.cluster['cluster:admin/xpack/ml/job/put'] &&
resp.cluster['cluster:admin/xpack/ml/job/open'] &&
resp.cluster['cluster:admin/xpack/ml/datafeeds/put']) {
privileges.canCreateJob = true;
}
if (resp.cluster['cluster:admin/xpack/ml/job/update']) {
privileges.canUpdateJob = true;
}
if (resp.cluster['cluster:admin/xpack/ml/job/open']) {
privileges.canOpenJob = true;
}
if (resp.cluster['cluster:admin/xpack/ml/job/close']) {
privileges.canCloseJob = true;
}
if (resp.cluster['cluster:admin/xpack/ml/job/forecast']) {
privileges.canForecastJob = true;
}
if (resp.cluster['cluster:admin/xpack/ml/job/delete'] &&
resp.cluster['cluster:admin/xpack/ml/datafeeds/delete']) {
privileges.canDeleteJob = true;
}
if (resp.cluster['cluster:admin/xpack/ml/job/open'] &&
resp.cluster['cluster:admin/xpack/ml/datafeeds/start'] &&
resp.cluster['cluster:admin/xpack/ml/datafeeds/stop']) {
privileges.canStartStopDatafeed = true;
}
if (resp.cluster['cluster:admin/xpack/ml/datafeeds/update']) {
privileges.canUpdateDatafeed = true;
}
if (resp.cluster['cluster:admin/xpack/ml/datafeeds/preview']) {
privileges.canPreviewDatafeed = true;
}
if (resp.cluster['cluster:admin/xpack/ml/calendars/put'] &&
resp.cluster['cluster:admin/xpack/ml/calendars/jobs/update'] &&
resp.cluster['cluster:admin/xpack/ml/calendars/events/post']) {
privileges.canCreateCalendar = true;
}
if (resp.cluster['cluster:admin/xpack/ml/calendars/delete'] &&
resp.cluster['cluster:admin/xpack/ml/calendars/events/delete']) {
privileges.canDeleteCalendar = true;
}
}
resolve(privileges);
})
.catch(() => {
reject(privileges);
});
});
}