X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=skyquake%2Fplugins%2Fcomposer%2Fsrc%2Fsrc%2Fcomponents%2FComposerApp.js;h=629f409dc96faad286e7461eb4aad73f8c70797e;hb=c33cde7c8824d79e9825698fe957c24dfa1fe798;hp=b5cfa75288cfd00542a65c14ff9a2bbace54fe4a;hpb=b06607173b5bafa999594cdc1e60a825f578e8e6;p=osm%2FUI.git diff --git a/skyquake/plugins/composer/src/src/components/ComposerApp.js b/skyquake/plugins/composer/src/src/components/ComposerApp.js index b5cfa7528..629f409dc 100644 --- a/skyquake/plugins/composer/src/src/components/ComposerApp.js +++ b/skyquake/plugins/composer/src/src/components/ComposerApp.js @@ -48,6 +48,9 @@ import TooltipManager from '../libraries/TooltipManager' import CatalogItemsActions from '../actions/CatalogItemsActions' import CommonUtils from 'utils/utils.js' import FileManagerActions from './filemanager/FileManagerActions'; +import {SkyquakeRBAC, isRBACValid} from 'widgets/skyquake_rbac/skyquakeRBAC.jsx'; +import ROLES from 'utils/roleConstants.js'; + import 'normalize.css' import '../styles/AppRoot.scss' import 'style/layout.scss' @@ -60,6 +63,8 @@ const clearLocalStorage = utils.getSearchParams(window.location).hasOwnProperty( const preventDefault = e => e.preventDefault(); const clearDragState = () => ComposerAppActions.setDragState(null); +const PROJECT_ROLES = ROLES.PROJECT; +const PLATFORM = ROLES.PLATFORM; const ComposerApp = React.createClass({ mixins: [PureRenderMixin], @@ -69,6 +74,10 @@ const ComposerApp = React.createClass({ getDefaultProps() { return {}; }, + contextTypes: { + router: React.PropTypes.object, + userProfile: React.PropTypes.object + }, componentWillMount() { if (clearLocalStorage) { window.localStorage.clear(); @@ -147,6 +156,8 @@ const ComposerApp = React.createClass({ render() { let html = null; let self = this; + const User = this.context.userProfile || {}; + const rbacDisabled = !isRBACValid(User, [PROJECT_ROLES.CAT_ADMIN]); if(this.state.hasModel) { function onClickUpdateSelection(event) { @@ -163,7 +174,7 @@ const ComposerApp = React.createClass({ } } - let cpNumber = 0; + let AppHeader = (
); @@ -174,12 +185,7 @@ const ComposerApp = React.createClass({ const isModified = self.state.item && self.state.item.uiState.modified; const isEditingNSD = self.state.item && self.state.item.uiState && /nsd/.test(self.state.item.uiState.type); const isEditingVNFD = self.state.item && self.state.item.uiState && /vnfd/.test(self.state.item.uiState.type); - const containers = [self.state.item].reduce(DescriptorModelFactory.buildCatalogItemFactory(CatalogDataStore.getState().catalogs), []); - - containers.filter(d => DescriptorModelFactory.isConnectionPoint(d)).forEach(d => { - d.cpNumber = ++cpNumber; - containers.filter(d => DescriptorModelFactory.isVnfdConnectionPointRef(d)).filter(ref => ref.key === d.key).forEach(ref => ref.cpNumber = d.cpNumber); - }); + const containers = self.state.containers; const canvasTitle = containers.length ? containers[0].model.name : ''; const hasNoCatalogs = CatalogDataStore.getState().catalogs.length === 0; const isLoading = self.state.isLoading; @@ -200,7 +206,8 @@ const ComposerApp = React.createClass({ + filterByType={self.state.filterCatalogByTypeValue} + rbacDisabled={rbacDisabled} /> { (self.state.panelTabShown == 'descriptor') ? @@ -229,7 +238,7 @@ const ComposerApp = React.createClass({ isEditingVNFD={isEditingVNFD} isModified={isModified} isNew={isNew} - disabled={!hasItem} + disabled={!hasItem || rbacDisabled} onClick={event => event.stopPropagation()} panelTabShown={self.state.panelTabShown}/> @@ -274,4 +283,5 @@ const ComposerApp = React.createClass({ }); + export default ComposerApp;