import React, { useState } from 'react'; import { isEmpty } from 'lodash'; import PropTypes from 'prop-types'; import { Button } from '@patternfly/react-core'; import { translate as __ } from 'foremanReact/common/I18n'; import { STATUS } from 'foremanReact/constants'; import PageLayout from 'foremanReact/routes/common/PageLayout/PageLayout'; import { useAPI } from 'foremanReact/common/hooks/API/APIHooks'; import PermissionDenied from './PermissionDenied'; import { JobWizard } from './JobWizard'; import { CURRENT_PERMISSIONS, currentPermissionsUrl, } from './JobWizardConstants'; const JobWizardPage = ({ location: { search } }) => { const title = __('Run job'); const breadcrumbOptions = { breadcrumbItems: [ { caption: __('Jobs'), url: `/job_invocations` }, { caption: title }, ], }; const [proceedAnyway, setProceedAnyway] = useState(false); const { response, status } = useAPI( 'get', currentPermissionsUrl, CURRENT_PERMISSIONS ); const desiredPermissions = [ 'view_hosts', 'view_smart_proxies', 'view_job_templates', 'create_job_invocations', 'create_template_invocations', ]; const missingPermissions = status === STATUS.RESOLVED ? desiredPermissions.filter( permission => !response.results.map(result => result.name).includes(permission) ) : []; if (!isEmpty(missingPermissions) && !proceedAnyway) { return ( ); } return ( {__('Use legacy form')} } pageSectionType="wizard" > ); }; JobWizardPage.propTypes = { location: PropTypes.shape({ search: PropTypes.string, }).isRequired, }; export default JobWizardPage;