blob: 9d3cdbe71fd98bd275a4a777b2a4c8f9b2e7dbb2 [file] [log] [blame]
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<div fxFill>
<div fxLayout="row" fxLayoutAlign="space-between center" class="pad-top-sm pad-bottom-md pad-left-md pad-right-md">
<span class="md-card-title">{{nfRegistryService.bucket.name}}</span>
<button mat-icon-button data-automation-id="nf-registry-manage-bucket-close-side-nav" (click)="closeSideNav()">
<mat-icon color="primary">close</mat-icon>
</button>
</div>
<div class="sidenav-content">
<div class="pad-left-md pad-right-md" flex fxLayoutAlign="start center">
<mat-input-container flex>
<input #bucketnameInput
data-automation-id="nf-registry-manage-bucket-input-name"
matInput
[disabled]="!nfRegistryService.currentUser.resourcePermissions.buckets.canWrite"
placeholder="Identity/Bucket Name"
value="{{nfRegistryService.bucket.name}}"
[(ngModel)]="bucketname">
</mat-input-container>
<button [disabled]="nfRegistryService.bucket.name === bucketname"
(click)="updateBucketName(bucketnameInput.value)"
data-automation-id="nf-registry-manage-bucket-save-side-nav"
class="input-button"
color="fds-regular"
mat-raised-button>
Save
</button>
</div>
<div class="pad-top-md pad-left-md pad-right-md">
<div class="pad-bottom-sm">
<span class="md-card-title">Bundle Settings</span>
</div>
<div>
<mat-checkbox #bundleRedeployCheckbox
[disabled]="!nfRegistryService.currentUser.resourcePermissions.buckets.canWrite"
[(ngModel)]="allowBundleRedeploy"
(change)="toggleBucketBundleRedeploy($event)">
Allow bundle overwrite<i matTooltip="Allows released bundles in this bucket to be overwritten" class="pad-left-sm fa fa-question-circle-o help-icon"></i>
</mat-checkbox>
</div>
</div>
<div *ngIf="!nfRegistryService.currentUser.anonymous || nfRegistryService.currentUser.resourcePermissions.policies.canRead" class="pad-top-md pad-left-md pad-right-md">
<div flex fxLayout="row" fxLayoutAlign="space-between center">
<span class="md-card-title">Policies ({{userIdentitiesWithPolicies.length + groupIdentitiesWithPolicies.length}})</span>
<button color="fds-secondary"
[disabled]="nfRegistryService.currentUser.anonymous || !canEditBucketPolicies() || !nfRegistryService.currentUser.resourcePermissions.tenants.canRead"
mat-raised-button
(click)="addPolicy()">
New Policy
</button>
</div>
<div id="nifi-registry-manage-bucket-list-container-column-header" fxLayout="row"
fxLayoutAlign="space-between center" class="td-data-table">
<div class="td-data-table-column" (click)="sortBuckets(column)"
*ngFor="let column of bucketPoliciesColumns"
fxFlex="{{column.width}}">
{{column.label}}
<i *ngIf="column.active && column.sortable && column.sortOrder === 'ASC'" class="fa fa-caret-up"
aria-hidden="true"></i>
<i *ngIf="column.active && column.sortable && column.sortOrder === 'DESC'" class="fa fa-caret-down"
aria-hidden="true"></i>
</div>
<div class="td-data-table-column"></div>
</div>
<div id="nifi-registry-manage-bucket-list-container">
<div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row"
[ngClass]="{'selected' : row.checked}" *ngFor="let row of filteredGroupPermsData"
(click)="row.checked = !row.checked">
<div class="td-data-table-cell" *ngFor="let column of bucketPoliciesColumns"
fxFlex="{{column.width}}">
<div class="ellipsis"
matTooltip="{{column.format ? column.format(row[column.name]) : row[column.name]}}">
<i *ngIf="column.name === 'identity'" class="fa fa-users push-right-sm"
aria-hidden="true"></i>{{column.format ? column.format(row[column.name]) :
row[column.name]}}
</div>
</div>
<div class="td-data-table-cell">
<button (click)="editPolicy(row);row.checked = !row.checked;"
[disabled]="!canEditBucketPolicies()"
matTooltip="'Edit user policies of this bucket'" mat-icon-button color="accent">
<i class="fa fa-pencil" aria-hidden="true"></i>
</button>
<button (click)="removePolicyFromBucket(row);row.checked = !row.checked;"
[disabled]="!canEditBucketPolicies()"
matTooltip="'Remove group policies from bucket'" mat-icon-button color="accent">
<i class="fa fa-trash" aria-hidden="true"></i>
</button>
</div>
</div>
<div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row"
[ngClass]="{'selected' : row.checked}" *ngFor="let row of filteredUserPermsData"
(click)="row.checked = !row.checked">
<div class="td-data-table-cell" *ngFor="let column of bucketPoliciesColumns"
fxFlex="{{column.width}}">
<div class="ellipsis"
matTooltip="{{column.format ? column.format(row[column.name]) : row[column.name]}}">
{{column.format ? column.format(row[column.name]) : row[column.name]}}
</div>
</div>
<div class="td-data-table-cell">
<button (click)="editPolicy(row);row.checked = !row.checked;"
matTooltip="'Edit user policies of this bucket'" mat-icon-button color="accent"
[disabled]="!canEditBucketPolicies()">
<i class="fa fa-pencil" aria-hidden="true"></i>
</button>
<button (click)="removePolicyFromBucket(row);row.checked = !row.checked;"
matTooltip="'Remove user policies from this bucket'" mat-icon-button color="accent"
[disabled]="!canEditBucketPolicies()">
<i class="fa fa-trash" aria-hidden="true"></i>
</button>
</div>
</div>
<div class="mat-padding"
*ngIf="filteredUserPermsData.length === 0 && filteredGroupPermsData.length === 0"
layout="row"
layout-align="center center">
<h3>No results to display.</h3>
</div>
</div>
</div>
<div class="pad-top-md pad-left-md pad-right-md">
<div class="pad-bottom-sm">
<span class="md-card-title">About</span>
</div>
<div>
<span class="field-header">Bucket Identifier</span>
<div>
<span class="ellipsis" matTooltip="{{nfRegistryService.bucket.identifier}}">{{nfRegistryService.bucket.identifier}}</span>
</div>
</div>
</div>
</div>
<button id="nf-registry-workflow-bucket-permissions-side-nav-container" class="push-right-md" mat-raised-button
color="fds-primary"
(click)="closeSideNav()">Close
</button>
</div>