From debfb0794ddfb85d8d1cfd535a203db5e90f93d4 Mon Sep 17 00:00:00 2001 From: sighphyre Date: Wed, 12 Jan 2022 13:27:36 +0200 Subject: [PATCH] fix: Add in missing create/delete tag permissions --- src/lib/services/feature-toggle-service.ts | 22 +++++++++++++ src/lib/types/permissions.ts | 2 ++ .../20220112071201-add-tag-permissions.js | 33 +++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 src/migrations/20220112071201-add-tag-permissions.js diff --git a/src/lib/services/feature-toggle-service.ts b/src/lib/services/feature-toggle-service.ts index b7baef6253..0213502d38 100644 --- a/src/lib/services/feature-toggle-service.ts +++ b/src/lib/services/feature-toggle-service.ts @@ -860,6 +860,28 @@ class FeatureToggleService { return this.getFeatureToggles({}, true); } + async changeProject( + featureName: string, + newProject: string, + createdBy: string, + ): Promise { + const feature = await this.featureToggleStore.get(featureName); + const oldProject = feature.project; + feature.project = newProject; + await this.featureToggleStore.update(newProject, feature); + + const tags = await this.tagStore.getAllTagsForFeature(featureName); + await this.eventStore.store( + new FeatureChangeProjectEvent({ + createdBy, + oldProject, + newProject, + featureName, + tags, + }), + ); + } + // TODO: add project id. async deleteFeature(featureName: string, createdBy: string): Promise { const toggle = await this.featureToggleStore.get(featureName); diff --git a/src/lib/types/permissions.ts b/src/lib/types/permissions.ts index 58276a3dab..bd19df4c10 100644 --- a/src/lib/types/permissions.ts +++ b/src/lib/types/permissions.ts @@ -30,5 +30,7 @@ export const CREATE_API_TOKEN = 'CREATE_API_TOKEN'; export const DELETE_API_TOKEN = 'DELETE_API_TOKEN'; export const UPDATE_TAG_TYPE = 'UPDATE_TAG_TYPE'; export const DELETE_TAG_TYPE = 'DELETE_TAG_TYPE'; +export const CREATE_TAG = 'CREATE_TAG'; +export const DELETE_TAG = 'DELETE_TAG'; export const UPDATE_FEATURE_VARIANTS = 'UPDATE_FEATURE_VARIANTS'; export const MOVE_FEATURE_TOGGLE = 'MOVE_FEATURE_TOGGLE'; diff --git a/src/migrations/20220112071201-add-tag-permissions.js b/src/migrations/20220112071201-add-tag-permissions.js new file mode 100644 index 0000000000..c8f5ff4050 --- /dev/null +++ b/src/migrations/20220112071201-add-tag-permissions.js @@ -0,0 +1,33 @@ +exports.up = function (db, cb) { + db.runSql( + ` + INSERT INTO permissions (permission, display_name, type) VALUES ('CREATE_TAG', 'Add tags to toggles', 'project'); + INSERT INTO permissions (permission, display_name, type) VALUES ('DELETE_TAG', 'Remove tags from toggles', 'project'); + + INSERT INTO role_permission (role_id, permission_id, environment) + SELECT + (SELECT id as role_id from roles WHERE name = 'Editor' LIMIT 1), + p.id as permission_id, + '' as environment + FROM permissions p + WHERE p.permission IN + ('CREATE_TAG', + 'DELETE_TAG'); + + INSERT INTO role_permission (role_id, permission_id, environment) + SELECT + (SELECT id as role_id from roles WHERE name = 'Owner' LIMIT 1), + p.id as permission_id, + '' as environment + FROM permissions p + WHERE p.permission IN + ('CREATE_TAG', + 'DELETE_TAG'); +`, + cb, + ); +}; + +exports.down = function (db, cb) { + cb(); +};