Fixed ListBuckets screen tooltip logic, HelpBox fix (#2404)

This commit is contained in:
jinapurapu
2022-11-03 14:57:30 -07:00
committed by GitHub
parent 404efd2523
commit 7c75c87a0c
6 changed files with 60 additions and 56 deletions

View File

@@ -27,7 +27,6 @@ export const IAM_SCOPES = {
S3_GET_BUCKET_POLICY: "s3:GetBucketPolicy",
S3_PUT_BUCKET_POLICY: "s3:PutBucketPolicy",
S3_GET_OBJECT: "s3:GetObject",
S3_STAR_OBJECT: "s3:*Object",
S3_PUT_OBJECT: "s3:PutObject",
S3_GET_OBJECT_LEGAL_HOLD: "s3:GetObjectLegalHold",
S3_PUT_OBJECT_LEGAL_HOLD: "s3:PutObjectLegalHold",
@@ -282,7 +281,6 @@ export const IAM_PERMISSIONS = {
IAM_SCOPES.ADMIN_LIST_USER_POLICIES,
IAM_SCOPES.ADMIN_LIST_USERS,
IAM_SCOPES.ADMIN_HEAL,
IAM_SCOPES.S3_STAR_BUCKET,
],
[IAM_ROLES.BUCKET_LIFECYCLE]: [
IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,
@@ -547,10 +545,6 @@ export const listGroupPermissions = [
export const deleteBucketPermissions = [
IAM_SCOPES.S3_DELETE_BUCKET,
IAM_SCOPES.S3_FORCE_DELETE_BUCKET,
IAM_SCOPES.S3_STAR_BUCKET,
];
export const browseBucketPermissions = [
IAM_SCOPES.S3_LIST_BUCKET,
IAM_SCOPES.S3_STAR_BUCKET,
];
export const browseBucketPermissions = [IAM_SCOPES.S3_LIST_BUCKET];

View File

@@ -110,7 +110,6 @@ const BrowserHandler = () => {
IAM_SCOPES.S3_LIST_BUCKET_VERSIONS,
IAM_SCOPES.S3_GET_BUCKET_POLICY_STATUS,
IAM_SCOPES.S3_DELETE_BUCKET_POLICY,
IAM_SCOPES.S3_STAR_BUCKET,
]);
const searchBar = (

View File

@@ -141,6 +141,8 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
}
});
const hasBuckets = records.length > 0;
const selectListBuckets = (e: React.ChangeEvent<HTMLInputElement>) => {
const targetD = e.target;
const value = targetD.value;
@@ -215,10 +217,7 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
setSelectedBuckets(selectAllBuckets);
};
const canCreateBucket = hasPermission("*", [
IAM_SCOPES.S3_CREATE_BUCKET,
IAM_SCOPES.S3_STAR_BUCKET,
]);
const canCreateBucket = hasPermission("*", [IAM_SCOPES.S3_CREATE_BUCKET]);
const canListBuckets = hasPermission("*", [IAM_SCOPES.S3_LIST_BUCKET]);
return (
@@ -245,12 +244,14 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
<AutoColorIcon marginRight={15} marginTop={10} />
</Grid>
)}
<SearchBox
onChange={setFilterBuckets}
placeholder="Search Buckets"
overrideClass={classes.searchField}
value={filterBuckets}
/>
{hasBuckets && (
<SearchBox
onChange={setFilterBuckets}
placeholder="Search Buckets"
overrideClass={classes.searchField}
value={filterBuckets}
/>
)}
<Grid
item
@@ -268,7 +269,11 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
<Fragment>
<TooltipWrapper
tooltip={
bulkSelect ? "Unselect Buckets" : "Select Multiple Buckets"
!hasBuckets
? ""
: bulkSelect
? "Unselect Buckets"
: "Select Multiple Buckets"
}
>
<Button
@@ -279,13 +284,16 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
}}
icon={<SelectMultipleIcon />}
variant={bulkSelect ? "callAction" : "regular"}
disabled={!hasBuckets}
/>
</TooltipWrapper>
{bulkSelect && (
<TooltipWrapper
tooltip={
selectedBuckets.length === filteredRecords.length
!hasBuckets
? ""
: selectedBuckets.length === filteredRecords.length
? "Unselect All Buckets"
: "Select All Buckets"
}
@@ -301,16 +309,18 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
<TooltipWrapper
tooltip={
selectedBuckets.length === 0
? bulkSelect
? "Please select at least one bucket on which to configure Lifecycle"
: "Use the Select Multiple Buckets button to choose buckets on which to configure Lifecycle"
: canPutLifecycle
? "Set Lifecycle"
: permissionTooltipHelper(
!hasBuckets
? ""
: !canPutLifecycle
? permissionTooltipHelper(
IAM_PERMISSIONS[IAM_ROLES.BUCKET_LIFECYCLE],
"configure lifecycle for the selected buckets"
)
: selectedBuckets.length === 0
? bulkSelect
? "Please select at least one bucket on which to configure Lifecycle"
: "Use the Select Multiple Buckets button to choose buckets on which to configure Lifecycle"
: "Set Lifecycle"
}
>
<Button
@@ -324,7 +334,17 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
/>
</TooltipWrapper>
<TooltipWrapper tooltip={"Set Replication"}>
<TooltipWrapper
tooltip={
!hasBuckets
? ""
: selectedBuckets.length === 0
? bulkSelect
? "Please select at least one bucket on which to configure Replication"
: "Use the Select Multiple Buckets button to choose buckets on which to configure Replication"
: "Set Replication"
}
>
<Button
id={"set-replication"}
onClick={() => {
@@ -408,7 +428,7 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
</Grid>
</Grid>
)}
{filteredRecords.length === 0 && filterBuckets === "" && (
{!hasBuckets && (
<Grid
container
justifyContent={"center"}
@@ -424,21 +444,23 @@ const ListBuckets = ({ classes }: IListBucketsProps) => {
MinIO uses buckets to organize objects. A bucket is
similar to a folder or directory in a filesystem, where
each bucket can hold an arbitrary number of objects.
<br></br>
<br></br>
{canListBuckets
? ""
: "In order to view the buckets on this server, you require " +
IAM_SCOPES.S3_LIST_BUCKET +
" permission. Please contact your MinIO administrator to establish this permission."}
<br />
{canListBuckets ? (
""
) : (
<Fragment>
<br />
{permissionTooltipHelper(
[IAM_SCOPES.S3_LIST_BUCKET],
"view the buckets on this server"
)}
<br />
</Fragment>
)}
<SecureComponent
scopes={[
IAM_SCOPES.S3_CREATE_BUCKET,
IAM_SCOPES.S3_STAR_BUCKET,
]}
scopes={[IAM_SCOPES.S3_CREATE_BUCKET]}
resource={CONSOLE_UI_RESOURCE}
>
<br />
<br />
To get started,&nbsp;
<AButton

View File

@@ -1236,18 +1236,9 @@ const ListObjects = () => {
uploadPath = uploadPath.concat(currentPath);
}
const canDownload = hasPermission(bucketName, [
IAM_SCOPES.S3_GET_OBJECT,
IAM_SCOPES.S3_STAR_OBJECT,
]);
const canDelete = hasPermission(bucketName, [
IAM_SCOPES.S3_DELETE_OBJECT,
IAM_SCOPES.S3_STAR_OBJECT,
]);
const canUpload = hasPermission(uploadPath, [
IAM_SCOPES.S3_PUT_OBJECT,
IAM_SCOPES.S3_STAR_OBJECT,
]);
const canDownload = hasPermission(bucketName, [IAM_SCOPES.S3_GET_OBJECT]);
const canDelete = hasPermission(bucketName, [IAM_SCOPES.S3_DELETE_OBJECT]);
const canUpload = hasPermission(uploadPath, [IAM_SCOPES.S3_PUT_OBJECT]);
const onClosePanel = (forceRefresh: boolean) => {
dispatch(setSelectedObjectView(null));

View File

@@ -430,7 +430,6 @@ const ObjectDetailPanel = ({
]);
const canGetObject = hasPermission(objectResources, [
IAM_SCOPES.S3_GET_OBJECT,
IAM_SCOPES.S3_STAR_OBJECT,
]);
const canDelete = hasPermission(
[bucketName, currentItem, [bucketName, actualInfo.name].join("/")],

View File

@@ -69,11 +69,10 @@ const UploadFilesButton = ({
const uploadObjectAllowed = hasPermission(uploadPath, [
IAM_SCOPES.S3_PUT_OBJECT,
IAM_SCOPES.S3_STAR_OBJECT,
]);
const uploadFolderAllowed = hasPermission(
bucketName,
[IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_STAR_OBJECT],
[IAM_SCOPES.S3_PUT_OBJECT],
false,
true
);