1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-04-10 01:16:39 +02:00

Feat/change request permissions (#2382)

* Adds two new permissions for the new enterprise level change request: APPROVE_CHANGE_REQUEST and APPLY_CHANGE_REQUEST
This commit is contained in:
Fredrik Strand Oseberg 2022-11-10 11:08:58 +01:00 committed by GitHub
parent 45ee135037
commit ac78c8f732
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 52 additions and 1 deletions

View File

@ -4,6 +4,11 @@ import cloneDeep from 'lodash.clonedeep';
import useProjectRolePermissions from 'hooks/api/getters/useProjectRolePermissions/useProjectRolePermissions';
import useProjectRolesApi from 'hooks/api/actions/useProjectRolesApi/useProjectRolesApi';
import { formatUnknownError } from 'utils/formatUnknownError';
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
import {
APPLY_CHANGE_REQUEST,
APPROVE_CHANGE_REQUEST,
} from 'component/providers/AccessProvider/permissions';
export interface ICheckedPermission {
[key: string]: IPermission;
@ -17,6 +22,7 @@ const useProjectRoleForm = (
initialRoleDesc = '',
initialCheckedPermissions = {}
) => {
const { uiConfig } = useUiConfig();
const { permissions } = useProjectRolePermissions({
revalidateIfStale: false,
revalidateOnReconnect: false,
@ -246,6 +252,28 @@ const useProjectRoleForm = (
? `${permission.id}-${permission.environment}`
: `${permission.id}`;
};
// Clean up when feature is complete changeRequests
let filteredPermissions = cloneDeep(permissions);
if (!uiConfig?.flags.changeRequests) {
filteredPermissions.environments = filteredPermissions.environments.map(
env => {
env.permissions = env.permissions.filter(permission => {
if (!uiConfig?.flags.changeRequests) {
if (
permission.name === APPLY_CHANGE_REQUEST ||
permission.name === APPROVE_CHANGE_REQUEST
) {
return false;
}
}
return true;
});
return env;
}
);
}
return {
roleName,
@ -264,7 +292,7 @@ const useProjectRoleForm = (
validateNameUniqueness,
errors,
getRoleKey,
permissions,
permissions: filteredPermissions,
};
};

View File

@ -31,3 +31,5 @@ export const MOVE_FEATURE_TOGGLE = 'MOVE_FEATURE_TOGGLE';
export const CREATE_SEGMENT = 'CREATE_SEGMENT';
export const UPDATE_SEGMENT = 'UPDATE_SEGMENT';
export const DELETE_SEGMENT = 'DELETE_SEGMENT';
export const APPLY_CHANGE_REQUEST = 'APPLY_CHANGE_REQUEST';
export const APPROVE_CHANGE_REQUEST = 'APPROVE_CHANGE_REQUEST';

View File

@ -37,3 +37,5 @@ export const MOVE_FEATURE_TOGGLE = 'MOVE_FEATURE_TOGGLE';
export const CREATE_SEGMENT = 'CREATE_SEGMENT';
export const UPDATE_SEGMENT = 'UPDATE_SEGMENT';
export const DELETE_SEGMENT = 'DELETE_SEGMENT';
export const APPROVE_CHANGE_REQUEST = 'APPROVE_CHANGE_REQUEST';
export const APPLY_CHANGE_REQUEST = 'APPLY_CHANGE_REQUEST';

View File

@ -0,0 +1,19 @@
exports.up = function (db, cb) {
db.runSql(
`
INSERT INTO permissions (permission, display_name, type) VALUES ('APPROVE_CHANGE_REQUEST', 'Approve a change request', 'environment');
INSERT INTO permissions (permission, display_name, type) VALUES ('APPLY_CHANGE_REQUEST', 'Apply a change request', 'environment');
`,
cb,
);
};
exports.down = function (db, cb) {
db.runSql(
`
DELETE FROM permissions WHERE permission = 'APPROVE_CHANGE_REQUEST';
DELETE FROM permissions WHERE permission = 'APPLY_CHANGE_REQUEST';
`,
cb,
);
};