[Cases][ResponseOps] Splitting out cases privileges (#134860)

* Splitting out cases privs

* [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix'

* Getting tests working

* Fixing import error

* Fixing tests

* Fixing role to only have delete permissions

* Extracting sub feature tests to trial license

* Removing deletion user from common tests

* Addressing feedback

* Fixing tests

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Jonathan Buttner 2022-06-29 10:47:06 -04:00 committed by GitHub
parent 4b7b363e9c
commit c4c9c73668
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 728 additions and 107 deletions

View file

@ -530,7 +530,11 @@ Array [
],
"cases": Object {
"all": Array [],
"create": Array [],
"delete": Array [],
"push": Array [],
"read": Array [],
"update": Array [],
},
"catalogue": Array [
"dashboard",
@ -682,7 +686,11 @@ Array [
],
"cases": Object {
"all": Array [],
"create": Array [],
"delete": Array [],
"push": Array [],
"read": Array [],
"update": Array [],
},
"catalogue": Array [
"discover",
@ -893,7 +901,11 @@ Array [
],
"cases": Object {
"all": Array [],
"create": Array [],
"delete": Array [],
"push": Array [],
"read": Array [],
"update": Array [],
},
"catalogue": Array [
"visualize",
@ -1026,7 +1038,11 @@ Array [
],
"cases": Object {
"all": Array [],
"create": Array [],
"delete": Array [],
"push": Array [],
"read": Array [],
"update": Array [],
},
"catalogue": Array [
"dashboard",
@ -1178,7 +1194,11 @@ Array [
],
"cases": Object {
"all": Array [],
"create": Array [],
"delete": Array [],
"push": Array [],
"read": Array [],
"update": Array [],
},
"catalogue": Array [
"discover",
@ -1389,7 +1409,11 @@ Array [
],
"cases": Object {
"all": Array [],
"create": Array [],
"delete": Array [],
"push": Array [],
"read": Array [],
"update": Array [],
},
"catalogue": Array [
"visualize",

View file

@ -72,7 +72,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type'],
create: ['cases-create-type'],
read: ['cases-read-type'],
update: ['cases-update-type'],
delete: ['cases-delete-type'],
push: ['cases-push-type'],
},
ui: ['ui-action'],
},
@ -137,7 +141,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type'],
create: ['cases-create-type'],
read: ['cases-read-type'],
update: ['cases-update-type'],
delete: ['cases-delete-type'],
push: ['cases-push-type'],
},
ui: ['ui-action'],
},
@ -201,7 +209,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type'],
create: ['cases-create-type'],
read: ['cases-read-type'],
update: ['cases-update-type'],
delete: ['cases-delete-type'],
push: ['cases-push-type'],
},
ui: ['ui-action'],
},
@ -267,7 +279,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type'],
create: ['cases-create-type'],
read: ['cases-read-type'],
update: ['cases-update-type'],
delete: ['cases-delete-type'],
push: ['cases-push-type'],
},
ui: ['ui-action'],
},
@ -303,7 +319,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type'],
create: ['cases-create-type'],
read: ['cases-read-type'],
update: ['cases-update-type'],
delete: ['cases-delete-type'],
push: ['cases-push-type'],
},
ui: ['ui-action'],
},
@ -360,7 +380,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-sub-type'],
create: ['cases-create-sub-type'],
read: ['cases-read-sub-type'],
update: ['cases-update-sub-type'],
delete: ['cases-delete-sub-type'],
push: ['cases-push-sub-type'],
},
ui: ['ui-sub-type'],
},
@ -402,7 +426,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type'],
create: ['cases-create-type'],
read: ['cases-read-type'],
update: ['cases-update-type'],
delete: ['cases-delete-type'],
push: ['cases-push-type'],
},
ui: ['ui-action'],
},
@ -465,7 +493,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type'],
create: ['cases-create-type'],
read: ['cases-read-type'],
update: ['cases-update-type'],
delete: ['cases-delete-type'],
push: ['cases-push-type'],
},
ui: ['ui-action'],
},
@ -522,7 +554,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-sub-type'],
create: ['cases-create-sub-type'],
read: ['cases-read-sub-type'],
update: ['cases-update-sub-type'],
delete: ['cases-delete-sub-type'],
push: ['cases-push-sub-type'],
},
ui: ['ui-sub-type'],
},
@ -564,7 +600,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type'],
create: ['cases-create-type'],
read: ['cases-read-type'],
update: ['cases-update-type'],
delete: ['cases-delete-type'],
push: ['cases-push-type'],
},
ui: ['ui-action'],
},
@ -627,7 +667,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type'],
create: ['cases-create-type'],
read: ['cases-read-type'],
update: ['cases-update-type'],
delete: ['cases-delete-type'],
push: ['cases-push-type'],
},
ui: ['ui-action'],
},
@ -685,7 +729,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-sub-type'],
create: ['cases-create-sub-type'],
read: ['cases-read-sub-type'],
update: ['cases-update-sub-type'],
delete: ['cases-delete-sub-type'],
push: ['cases-push-sub-type'],
},
ui: ['ui-sub-type'],
},
@ -730,7 +778,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type', 'cases-all-sub-type'],
create: ['cases-create-type', 'cases-create-sub-type'],
read: ['cases-read-type', 'cases-read-sub-type'],
update: ['cases-update-type', 'cases-update-sub-type'],
delete: ['cases-delete-type', 'cases-delete-sub-type'],
push: ['cases-push-type', 'cases-push-sub-type'],
},
ui: ['ui-action', 'ui-sub-type'],
},
@ -762,6 +814,10 @@ describe('featurePrivilegeIterator', () => {
cases: {
all: ['cases-all-sub-type'],
read: ['cases-read-type', 'cases-read-sub-type'],
create: ['cases-create-sub-type'],
update: ['cases-update-sub-type'],
delete: ['cases-delete-sub-type'],
push: ['cases-push-sub-type'],
},
ui: ['ui-action', 'ui-sub-type'],
},
@ -799,7 +855,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type'],
create: ['cases-create-type'],
read: ['cases-read-type'],
update: ['cases-update-type'],
delete: ['cases-delete-type'],
push: ['cases-push-type'],
},
ui: ['ui-action'],
},
@ -899,7 +959,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type'],
create: ['cases-create-type'],
read: ['cases-read-type'],
update: ['cases-update-type'],
delete: ['cases-delete-type'],
push: ['cases-push-type'],
},
ui: ['ui-action'],
},
@ -929,7 +993,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: [],
create: [],
read: ['cases-read-type'],
update: [],
delete: [],
push: [],
},
ui: ['ui-action'],
},
@ -965,7 +1033,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type'],
create: ['cases-create-type'],
read: ['cases-read-type'],
update: ['cases-update-type'],
delete: ['cases-delete-type'],
push: ['cases-push-type'],
},
ui: ['ui-action'],
},
@ -1024,6 +1096,10 @@ describe('featurePrivilegeIterator', () => {
cases: {
all: ['cases-all-sub-type'],
read: ['cases-read-sub-type'],
create: ['cases-create-sub-type'],
update: ['cases-update-sub-type'],
delete: ['cases-delete-sub-type'],
push: ['cases-push-sub-type'],
},
ui: ['ui-sub-type'],
},
@ -1068,7 +1144,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type', 'cases-all-sub-type'],
create: ['cases-create-type', 'cases-create-sub-type'],
read: ['cases-read-type', 'cases-read-sub-type'],
update: ['cases-update-type', 'cases-update-sub-type'],
delete: ['cases-delete-type', 'cases-delete-sub-type'],
push: ['cases-push-type', 'cases-push-sub-type'],
},
ui: ['ui-action', 'ui-sub-type'],
},
@ -1256,7 +1336,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-sub-type'],
create: ['cases-create-sub-type'],
read: ['cases-read-sub-type'],
update: ['cases-update-sub-type'],
delete: ['cases-delete-sub-type'],
push: ['cases-push-sub-type'],
},
ui: ['ui-sub-type'],
},
@ -1301,7 +1385,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-sub-type'],
create: ['cases-create-sub-type'],
read: ['cases-read-sub-type'],
update: ['cases-update-sub-type'],
delete: ['cases-delete-sub-type'],
push: ['cases-push-sub-type'],
},
ui: ['ui-sub-type'],
},
@ -1332,7 +1420,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-sub-type'],
create: ['cases-create-sub-type'],
read: ['cases-read-sub-type'],
update: ['cases-update-sub-type'],
delete: ['cases-delete-sub-type'],
push: ['cases-push-sub-type'],
},
ui: ['ui-sub-type'],
},
@ -1368,7 +1460,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type'],
create: ['cases-create-type'],
read: ['cases-read-type'],
update: ['cases-update-type'],
delete: ['cases-delete-type'],
push: ['cases-push-type'],
},
ui: ['ui-action'],
},
@ -1454,7 +1550,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: ['cases-all-type'],
create: ['cases-create-type'],
read: ['cases-read-type'],
update: ['cases-update-type'],
delete: ['cases-delete-type'],
push: ['cases-push-type'],
},
ui: ['ui-action'],
},
@ -1484,7 +1584,11 @@ describe('featurePrivilegeIterator', () => {
},
cases: {
all: [],
create: [],
read: ['cases-read-type'],
update: [],
delete: [],
push: [],
},
ui: ['ui-action'],
},

View file

@ -135,7 +135,20 @@ function mergeWithSubFeatures(
mergedConfig.cases = {
all: mergeArrays(mergedConfig.cases?.all ?? [], subFeaturePrivilege.cases?.all ?? []),
create: mergeArrays(
mergedConfig.cases?.create ?? [],
subFeaturePrivilege.cases?.create ?? []
),
read: mergeArrays(mergedConfig.cases?.read ?? [], subFeaturePrivilege.cases?.read ?? []),
update: mergeArrays(
mergedConfig.cases?.update ?? [],
subFeaturePrivilege.cases?.update ?? []
),
delete: mergeArrays(
mergedConfig.cases?.delete ?? [],
subFeaturePrivilege.cases?.delete ?? []
),
push: mergeArrays(mergedConfig.cases?.push ?? [], subFeaturePrivilege.cases?.push ?? []),
};
}
return mergedConfig;

View file

@ -74,6 +74,17 @@ const appCategorySchema = schema.object({
order: schema.maybe(schema.number()),
});
const casesSchemaObject = schema.maybe(
schema.object({
all: schema.maybe(casesSchema),
create: schema.maybe(casesSchema),
read: schema.maybe(casesSchema),
update: schema.maybe(casesSchema),
delete: schema.maybe(casesSchema),
push: schema.maybe(casesSchema),
})
);
const kibanaPrivilegeSchema = schema.object({
excludeFromBasePrivileges: schema.maybe(schema.boolean()),
requireAllSpaces: schema.maybe(schema.boolean()),
@ -98,12 +109,7 @@ const kibanaPrivilegeSchema = schema.object({
),
})
),
cases: schema.maybe(
schema.object({
all: schema.maybe(casesSchema),
read: schema.maybe(casesSchema),
})
),
cases: casesSchemaObject,
savedObject: schema.object({
all: schema.arrayOf(schema.string()),
read: schema.arrayOf(schema.string()),
@ -140,12 +146,7 @@ const kibanaIndependentSubFeaturePrivilegeSchema = schema.object({
),
})
),
cases: schema.maybe(
schema.object({
all: schema.maybe(casesSchema),
read: schema.maybe(casesSchema),
})
),
cases: casesSchemaObject,
api: schema.maybe(schema.arrayOf(schema.string())),
app: schema.maybe(schema.arrayOf(schema.string())),
savedObject: schema.object({