All files / src/utils permissions.js

100% Statements 7/7
100% Branches 5/5
100% Functions 2/2
100% Lines 5/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29        3x   3x                                   33x 33x 43x    
import { ROLES } from '../constants/roles';
 
const {
  ADMIN, PRODUCT_MANAGER, RELEASE_ENGINEER, DASHBOARD_USER,
} = ROLES;
 
export const PERMISSIONS = {
  'domain.create': [ADMIN],
  'domain.delete': [ADMIN],
  'experiment.create': [ADMIN, PRODUCT_MANAGER, RELEASE_ENGINEER],
  'experiment.edit': [ADMIN, PRODUCT_MANAGER, RELEASE_ENGINEER],
  'experiment.delete': [ADMIN],
  'target.create': [ADMIN, PRODUCT_MANAGER, RELEASE_ENGINEER],
  'target.edit': [ADMIN, PRODUCT_MANAGER, RELEASE_ENGINEER],
  'target.delete': [ADMIN],
  'template.create': [ADMIN],
  'meGroup.create': [ADMIN, PRODUCT_MANAGER, RELEASE_ENGINEER],
  'meGroup.delete': [ADMIN],
  'emailTemplate.create': [ADMIN],
  'emailTemplate.delete': [ADMIN],
  'splits.access': [ADMIN, PRODUCT_MANAGER, DASHBOARD_USER],
};
 
export function hasPermission(action, userRoles = []) {
  const allowedRoles = PERMISSIONS[action];
  if (!allowedRoles || allowedRoles.length === 0) return true;
  return allowedRoles.some((role) => userRoles.includes(role));
}