UNPKG

acklen-keystone

Version:

Web Application Framework and Admin GUI / Content Management System built on Express.js and Mongoose

79 lines (71 loc) 2.88 kB
import { browserHistory } from 'react-router'; const allowMenuOption = (section, userIsAdministrator, userIsEditor) => { const adminOnlyMenuOptions = ['menus', 'users', 'agaFamilyWebsite', 'globalFooter']; const adminOrEditorOnlyMenuOptions = ['blog', 'modules', 'home', 'pageBuilder']; if (adminOnlyMenuOptions.indexOf(section.key) > -1) { return userIsAdministrator; } if (adminOrEditorOnlyMenuOptions.indexOf(section.key) > -1) { return userIsAdministrator || userIsEditor; } return true; }; const allowSubMenuOption = (item, userIsAdministrator, userIsEditor) => { const adminOnlySubMenuOptions = ['BlogFooter', 'CustomCss', 'GlobalFooter']; const adminOrEditorOnlySubMenuOptions = ['FooterSnippet', 'GuidelinesFooter', 'GraphicBannerSnippet', 'PatientCenterGraphicBanners', 'BlogLatestIssue']; if (adminOnlySubMenuOptions.indexOf(item.key) > -1) { return userIsAdministrator; } if (adminOrEditorOnlySubMenuOptions.indexOf(item.key) > -1) { return userIsAdministrator || userIsEditor; } return true; }; const checkPermissionForUserByPath = (location, index) => { const arrPath = location.pathname.split('/'); const path = arrPath[arrPath.length - index]; const userIsAdministrator = Keystone.user.isAdministrator; const userIsEditor = Keystone.user.isEditor; const adminOnlyMenuOptions = ['blog-footers', 'blog-footer-versions', 'custom-css', 'menus', 'users', 'agafamily-websites', 'global-footer-links', 'global-footer-columns', 'global-footers', 'global-footer-link-versions', 'global-footer-column-versions', 'global-footer-versions']; const adminOrEditorOnlySubMenuOptions = ['homes', 'home-versions', 'body-fields', 'body-field-versions', 'credit-snippets', 'credit-snippet-versions', 'footer-snippets', 'footer-snippet-versions', 'graphic-banner-snippets', 'graphic-banner-snippet-versions', 'graphic-toggles', 'graphic-toggle-versions', 'hero-banners', 'hero-banner-versions', 'key-dates', 'key-date-versions', 'labels', 'label-versions', 'link-boxes', 'link-box-versions', 'signposts', 'signpost-versions', 'simple-cards', 'simple-card-versions', 'sub-tab-navs', 'sub-tab-nav-versions', 'toggles', 'toggle-versions', 'patient-center-graphic-banners', 'patient-center-graphic-banners-versions', 'guidelines-footer', 'guidelines-footer-versions', 'blog-latest-issues', 'blog-latest-issue-versions', 'page-builders']; if (adminOnlyMenuOptions.indexOf(path) > -1) { if (!userIsAdministrator) { if (path === 'users' && arrPath.length > 3 && arrPath[3] === Keystone.user.id) { return; } browserHistory.push('/keystone/'); } } if (adminOrEditorOnlySubMenuOptions.indexOf(path) > -1) { if (!userIsAdministrator && !userIsEditor) { browserHistory.push('/keystone/'); } } }; module.exports = { allowMenuOption, allowSubMenuOption, checkPermissionForUserByPath, };