[ML] Update file data visualizer permissions (#101169)

* [ML] Update file data visualizer permissions

* adding home bundle

* fixing translations

* removing home from bundles

* switching to current user for analysis

* adding find structure permission check

* clean up

* updating text

* updating maps

* removing has_find_file_structure_permission endpoint

* removing more code

* adding permission error message

* renaming variable

* adding fileUpload:analyzeFile back into ML

* updating error text

* updating snapshots

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
James Gowdy 2021-06-29 21:07:07 +01:00 committed by GitHub
parent c24318ae40
commit 21dad7edb5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 53 additions and 18 deletions

View file

@ -15,7 +15,11 @@ import { isEqual } from 'lodash';
import { AboutPanel, LoadingPanel } from '../about_panel';
import { BottomBar } from '../bottom_bar';
import { ResultsView } from '../results_view';
import { FileCouldNotBeRead, FileTooLarge } from './file_error_callouts';
import {
FileCouldNotBeRead,
FileTooLarge,
FindFileStructurePermissionDenied,
} from './file_error_callouts';
import { EditFlyout } from '../edit_flyout';
import { ExplanationFlyout } from '../explanation_flyout';
import { ImportView } from '../import_view';
@ -50,6 +54,7 @@ export class FileDataVisualizerView extends Component {
isExplanationFlyoutVisible: false,
bottomBarVisible: false,
hasPermissionToImport: false,
fileCouldNotBeReadPermissionError: false,
};
this.overrides = {};
@ -87,6 +92,7 @@ export class FileDataVisualizerView extends Component {
fileSize: 0,
fileTooLarge: false,
fileCouldNotBeRead: false,
fileCouldNotBeReadPermissionError: false,
serverError: null,
results: undefined,
explanation: undefined,
@ -182,17 +188,19 @@ export class FileDataVisualizerView extends Component {
fileCouldNotBeRead: isRetry,
});
} catch (error) {
const fileCouldNotBeReadPermissionError = error.body.statusCode === 403;
this.setState({
results: undefined,
explanation: undefined,
loaded: false,
loading: false,
fileCouldNotBeRead: true,
fileCouldNotBeReadPermissionError,
serverError: error,
});
// reload the results with the previous overrides
if (isRetry === false) {
if (isRetry === false && fileCouldNotBeReadPermissionError === false) {
this.setState({
loading: true,
loaded: false,
@ -275,6 +283,7 @@ export class FileDataVisualizerView extends Component {
isExplanationFlyoutVisible,
bottomBarVisible,
hasPermissionToImport,
fileCouldNotBeReadPermissionError,
} = this.state;
const fields =
@ -286,7 +295,12 @@ export class FileDataVisualizerView extends Component {
<div>
{mode === MODE.READ && (
<>
{!loading && !loaded && <AboutPanel onFilePickerChange={this.onFilePickerChange} />}
{!loading && !loaded && (
<AboutPanel
onFilePickerChange={this.onFilePickerChange}
disabled={!fileCouldNotBeReadPermissionError}
/>
)}
{loading && <LoadingPanel />}
@ -296,11 +310,15 @@ export class FileDataVisualizerView extends Component {
{fileCouldNotBeRead && loading === false && (
<>
<FileCouldNotBeRead
error={serverError}
loaded={loaded}
showEditFlyout={this.showEditFlyout}
/>
{fileCouldNotBeReadPermissionError ? (
<FindFileStructurePermissionDenied />
) : (
<FileCouldNotBeRead
error={serverError}
loaded={loaded}
showEditFlyout={this.showEditFlyout}
/>
)}
<EuiSpacer size="l" />
</>
)}

View file

@ -146,3 +146,26 @@ export const Explanation: FC<{ error: FindFileStructureErrorResponse }> = ({ err
</>
);
};
export const FindFileStructurePermissionDenied: FC = () => {
return (
<>
<EuiCallOut
title={
<FormattedMessage
id="xpack.dataVisualizer.file.fileErrorCallouts.findFileStructurePermissionDenied.title"
defaultMessage="Permission denied"
/>
}
color="danger"
iconType="cross"
data-test-subj="dataVisualizerFileStructurePermissionDeniedErrorCallout"
>
<FormattedMessage
id="xpack.dataVisualizer.file.fileErrorCallouts.findFileStructurePermissionDenied.description"
defaultMessage="You do not have sufficient privileges to analyze files."
/>
</EuiCallOut>
</>
);
};