<!--
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 ellipsis">{{nfRegistryService.user.identity}}</span>
        <button mat-icon-button data-automation-id="nf-registry-manage-user-close-side-nav" (click)="closeSideNav()">
            <mat-icon color="primary">close</mat-icon>
        </button>
    </div>
    <div class="sidenav-content">
        <div class="pad-bottom-md pad-left-md pad-right-md" flex fxLayoutAlign="start center">
            <mat-input-container flex>
                <input #usernameInput
                       matInput
                       [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite || (nfRegistryService.currentUser.identity === nfRegistryService.user.identity) || !nfRegistryService.user.configurable"
                       placeholder="Identity/User Name"
                       value="{{nfRegistryService.user.identity}}"
                       [(ngModel)]="_username">
            </mat-input-container>
            <button [disabled]="nfRegistryService.user.identity === _username || (nfRegistryService.currentUser.identity === nfRegistryService.user.identity) || !nfRegistryService.user.configurable"
                    (click)="updateUserName(usernameInput.value)"
                    data-automation-id="nf-registry-manage-user-save-side-nav"
                    class="input-button"
                    color="fds-regular"
                    mat-raised-button>
                Save
            </button>
        </div>
        <div class="pad-bottom-md pad-left-md pad-right-md" flex fxLayout="column" fxLayoutAlign="space-between start">
            <div>
            <span class="header">Special Privileges
                <i matTooltip="Additional permissions that allow a user to manage or access certain aspects of the registry."
                   class="pad-left-sm fa fa-question-circle-o help-icon"></i>
            </span>
            </div>
            <mat-checkbox
                    [disabled]="!canEditSpecialPrivileges()"
                    [checked]="nfRegistryService.user.resourcePermissions.buckets.canRead && nfRegistryService.user.resourcePermissions.buckets.canWrite && nfRegistryService.user.resourcePermissions.buckets.canDelete"
                    (change)="toggleUserManageBucketsPrivileges($event)">
            <span class="description">Can manage buckets<i
                    matTooltip="Allow a user to manage all buckets in the registry, as well as provide the user access to all buckets from a connected system (e.g., NiFi)."
                    class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>
            </mat-checkbox>
            <div flex fxLayout="row" fxLayoutAlign="space-around center">
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.user.resourcePermissions.buckets.canRead"
                              (change)="toggleUserManageBucketsPrivileges($event, 'read')">
                    <span class="description">Read</span>
                </mat-checkbox>
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.user.resourcePermissions.buckets.canWrite"
                              (change)="toggleUserManageBucketsPrivileges($event, 'write')">
                    <span class="description">Write</span>
                </mat-checkbox>
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.user.resourcePermissions.buckets.canDelete"
                              (change)="toggleUserManageBucketsPrivileges($event, 'delete')">
                    <span class="description">Delete</span>
                </mat-checkbox>
            </div>
            <mat-checkbox
                    [disabled]="!canEditSpecialPrivileges()"
                    [checked]="nfRegistryService.user.resourcePermissions.tenants.canRead && nfRegistryService.user.resourcePermissions.tenants.canWrite && nfRegistryService.user.resourcePermissions.tenants.canDelete"
                    (change)="toggleUserManageTenantsPrivileges($event)">
            <span class="description">Can manage users<i
                    matTooltip="Allow a user to manage all registry users and groups."
                    class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>
            </mat-checkbox>
            <div flex fxLayout="row" fxLayoutAlign="space-around center">
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.user.resourcePermissions.tenants.canRead"
                              (change)="toggleUserManageTenantsPrivileges($event, 'read')">
                    <span class="description">Read</span>
                </mat-checkbox>
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.user.resourcePermissions.tenants.canWrite"
                              (change)="toggleUserManageTenantsPrivileges($event, 'write')">
                    <span class="description">Write</span>
                </mat-checkbox>
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.user.resourcePermissions.tenants.canDelete"
                              (change)="toggleUserManageTenantsPrivileges($event, 'delete')">
                    <span class="description">Delete</span>
                </mat-checkbox>
            </div>
            <mat-checkbox
                    [disabled]="!canEditSpecialPrivileges()"
                    [checked]="nfRegistryService.user.resourcePermissions.policies.canRead && nfRegistryService.user.resourcePermissions.policies.canWrite && nfRegistryService.user.resourcePermissions.policies.canDelete"
                    (change)="toggleUserManagePoliciesPrivileges($event)">
            <span class="description">Can manage policies<i
                    matTooltip="Allow a user to grant all registry users read, write, and delete permission to a bucket."
                    class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>
            </mat-checkbox>
            <div flex fxLayout="row" fxLayoutAlign="space-around center">
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.user.resourcePermissions.policies.canRead"
                              (change)="toggleUserManagePoliciesPrivileges($event, 'read')">
                    <span class="description">Read</span>
                </mat-checkbox>
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.user.resourcePermissions.policies.canWrite"
                              (change)="toggleUserManagePoliciesPrivileges($event, 'write')">
                    <span class="description">Write</span>
                </mat-checkbox>
                <mat-checkbox class="pad-left-md"
                              [disabled]="!canEditSpecialPrivileges()"
                              [(checked)]="nfRegistryService.user.resourcePermissions.policies.canDelete"
                              (change)="toggleUserManagePoliciesPrivileges($event, 'delete')">
                    <span class="description">Delete</span>
                </mat-checkbox>
            </div>
            <mat-checkbox
                    [disabled]="!canEditSpecialPrivileges()"
                    [checked]="nfRegistryService.user.resourcePermissions.proxy.canWrite"
                    (change)="toggleUserManageProxyPrivileges($event)">
            <span class="description">Can proxy user requests<i
                    matTooltip="Allow a connected system (e.g., NiFi) to process requests of authorized users of that system."
                    class="pad-left-sm fa fa-question-circle-o help-icon"></i></span>
            </mat-checkbox>
        </div>
        <mat-button-toggle-group name="nifi-registry-manage-user-perspective" class="pad-left-md tab-toggle-group">
            <mat-button-toggle [checked]="manageUserPerspective === 'membership'"
                               value="membership"
                               class="uppercase"
                               (change)="manageUserPerspective = 'membership'"
                               i18n="Group membership tab, user management sidenav|View the groups to which this user belongs.@@nf-admin-user-management-sidenav-membership-tab-title">
                Membership
            </mat-button-toggle>
        </mat-button-toggle-group>
        <div *ngIf="manageUserPerspective === 'membership'">
            <div *ngIf="nfRegistryService.user.userGroups" class="pad-top-md pad-bottom-sm pad-left-md pad-right-md">
                <div flex fxLayout="row" fxLayoutAlign="space-between center">
                    <span class="md-card-title">Membership ({{nfRegistryService.user.userGroups.length}})</span>
                    <button color="fds-secondary"
                            [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite || canAddNonConfigurableUserToGroup()"
                            mat-raised-button
                            (click)="addUserToGroups()">
                        Add To Group
                    </button>
                </div>
                <div id="nifi-registry-user-membership-list-container-column-header" fxLayout="row"
                     fxLayoutAlign="space-between center" class="td-data-table">
                    <div class="td-data-table-column" (click)="sortGroups(column)"
                         *ngFor="let column of userGroupsColumns"
                         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>
                <div id="nifi-registry-user-membership-list-container">
                    <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row"
                         [ngClass]="{'selected' : row.checked}" *ngFor="let row of filteredUserGroups"
                         (click)="row.checked = !row.checked">
                        <div class="td-data-table-cell" *ngFor="let column of userGroupsColumns"
                             fxFlex="{{column.width}}">
                            <div class="ellipsis"
                                 matTooltip="{{column.format ? column.format(row[column.name]) : row[column.name]}}">
                                <i 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">
                            <div>
                                <button (click)="removeUserFromGroup(row);row.checked = !row.checked;"
                                        [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite || row.configurable === false"
                                        matTooltip="'Remove user from group'" mat-icon-button color="accent">
                                    <i class="fa fa-trash" aria-hidden="true"></i>
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="mat-padding" *ngIf="nfRegistryService.user.userGroups.length === 0" layout="row"
                     layout-align="center center">
                    <h3>This user does not belong to any groups yet.</h3>
                </div>
            </div>
        </div>
    </div>
    <button id="nf-registry-user-permissions-side-nav-container" class="push-right-md" mat-raised-button
            color="fds-primary"
            (click)="closeSideNav()">Close
    </button>
</div>
