nifi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bbe...@apache.org
Subject [4/4] nifi-registry git commit: NIFIREG-30 - Add bucket side nav
Date Thu, 21 Dec 2017 15:46:53 GMT
NIFIREG-30 - Add bucket side nav

This closes #61.

Signed-off-by: Bryan Bende <bbende@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/nifi-registry/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi-registry/commit/6c48025c
Tree: http://git-wip-us.apache.org/repos/asf/nifi-registry/tree/6c48025c
Diff: http://git-wip-us.apache.org/repos/asf/nifi-registry/diff/6c48025c

Branch: refs/heads/master
Commit: 6c48025c5253c3797e125396546ea2f9a906c328
Parents: 2e35235
Author: Scott Aslan <scottyaslan@gmail.com>
Authored: Thu Dec 21 10:44:18 2017 -0500
Committer: Bryan Bende <bbende@apache.org>
Committed: Thu Dec 21 10:45:35 2017 -0500

----------------------------------------------------------------------
 nifi-registry-web-ui/pom.xml                    |  18 +-
 .../src/main/frontend/package.json              |  37 +-
 .../src/main/locale/messages.es.xlf             |  24 ++
 .../core/common/styles/_expansionPanels.scss    |   4 -
 .../core/common/styles/_globalVars.scss         |   1 +
 .../platform/core/common/styles/_menus.scss     |   5 -
 .../platform/core/common/styles/_tables.scss    |   5 +
 .../src/main/webapp/WEB-INF/pages/index.jsp     |  20 +-
 .../nf-registry-administration.spec.js          |   4 +-
 .../nf-registry-add-user-to-groups.js           |   6 +
 .../nf-registry-add-user-to-groups.spec.js      |   2 +-
 .../dialogs/add-user/nf-registry-add-user.js    |  12 +-
 .../nf-registry-create-new-group.js             |  12 +-
 .../users/nf-registry-users-administration.html |  39 +-
 .../users/nf-registry-users-administration.js   |  11 +-
 .../nf-registry-users-adminstration.spec.js     |   6 +-
 .../manage-group/nf-registry-manage-group.html  | 268 +++++++-----
 .../manage-group/nf-registry-manage-group.js    |  54 ++-
 .../manage-user/nf-registry-manage-user.html    | 280 ++++++++-----
 .../manage-user/nf-registry-manage-user.js      |  12 +-
 .../nf-registry-bucket-permissions.html         | 114 -----
 .../nf-registry-bucket-permissions.js           |  85 ----
 .../nf-registry-add-policy-to-bucket.html       |  99 +++++
 .../nf-registry-add-policy-to-bucket.js         | 381 +++++++++++++++++
 .../nf-registry-create-bucket.html              |  46 ++
 .../create-bucket/nf-registry-create-bucket.js  |  81 ++++
 .../nf-registry-create-bucket.spec.js           |  77 ++++
 .../nf-registry-edit-bucket-policy.html         |  55 +++
 .../nf-registry-edit-bucket-policy.js           | 352 ++++++++++++++++
 .../dialogs/nf-registry-create-bucket.html      |  46 --
 .../dialogs/nf-registry-create-bucket.js        |  77 ----
 .../dialogs/nf-registry-create-bucket.spec.js   |  77 ----
 .../nf-registry-workflow-administration.html    |  20 +-
 .../nf-registry-workflow-administration.js      |   9 +-
 .../nf-registry-workflow-administration.spec.js |   6 +-
 .../nf-registry-manage-bucket.html              | 128 ++++++
 .../manage-bucket/nf-registry-manage-bucket.js  | 415 +++++++++++++++++++
 .../nf-registry-bucket-grid-list-viewer.js      |   3 +-
 .../nf-registry-bucket-grid-list-viewer.spec.js |   4 +-
 .../nf-registry-droplet-grid-list-viewer.js     |   3 +-
 ...nf-registry-droplet-grid-list-viewer.spec.js |   4 +-
 .../registry/nf-registry-grid-list-viewer.html  |  15 +-
 .../registry/nf-registry-grid-list-viewer.js    |   3 +-
 .../nf-registry-grid-list-viewer.spec.js        |   4 +-
 .../explorer/nf-registry-explorer.spec.js       |   4 +-
 .../login/dialogs/nf-registry-user-login.js     |  20 +-
 .../webapp/images/registry-background-logo.svg  |  17 +
 .../src/main/webapp/nf-registry.html            |   7 +-
 .../src/main/webapp/nf-registry.module.js       |  12 +-
 .../src/main/webapp/nf-registry.routes.js       |   9 +-
 .../src/main/webapp/nf-registry.spec.js         |   4 +-
 .../src/main/webapp/services/nf-registry.api.js | 147 +++++--
 .../webapp/services/nf-registry.api.spec.js     |  41 +-
 .../services/nf-registry.auth-guard.service.js  |  21 +-
 .../main/webapp/services/nf-registry.service.js | 131 ++++--
 .../webapp/services/nf-registry.service.spec.js |  38 +-
 .../src/main/webapp/systemjs.builder.config.js  |   6 +-
 .../src/main/webapp/theming/_helperClasses.scss |   8 +
 .../main/webapp/theming/_structureElements.scss | 149 +++----
 .../users/_structureElements.scss               |   6 +
 .../explorer/grid-list/_structureElements.scss  |   3 +-
 61 files changed, 2585 insertions(+), 962 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/pom.xml
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/pom.xml b/nifi-registry-web-ui/pom.xml
index 4f14af7..51e65e9 100644
--- a/nifi-registry-web-ui/pom.xml
+++ b/nifi-registry-web-ui/pom.xml
@@ -192,6 +192,7 @@
                                     <filtering>false</filtering>
                                     <includes>
                                         <!-- roboto -->
+                                        <include>roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.ttf</include>
                                         <include>roboto-fontface/fonts/Roboto/Roboto-Regular.ttf</include>
                                         <include>roboto-fontface/fonts/Roboto/Roboto-Medium.ttf</include>
                                         <include>roboto-fontface/fonts/Roboto/Roboto-Light.ttf</include>
@@ -484,7 +485,22 @@
                                             <directory>${frontend.working.dir}/node_modules</directory>
                                             <filtering>false</filtering>
                                             <includes>
-                                                <include>**/*</include>
+                                                <include>@fluid-design-system/**/*</include>
+                                                <include>@angular/**/*</include>
+                                                <include>hammerjs/**/*</include>
+                                                <include>@covalent/**/*</include>
+                                                <include>rxjs/**/*</include>
+                                                <include>moment/**/*</include>
+                                                <include>angular2-moment/**/*</include>
+                                                <include>zone.js/**/*</include>
+                                                <include>core-js/**/*</include>
+                                                <include>superagent/**/*</include>
+                                                <include>querystring/**/*</include>
+                                                <include>tslib/**/*</include>
+                                                <include>systemjs/**/*</include>
+                                                <include>systemjs-plugin-text/**/*</include>
+                                                <include>jquery/**/*</include>
+                                                <include>roboto-fontface/**/*</include>
                                             </includes>
                                         </resource>
                                     </resources>

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/frontend/package.json
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/frontend/package.json b/nifi-registry-web-ui/src/main/frontend/package.json
index 4bfe687..080c676 100644
--- a/nifi-registry-web-ui/src/main/frontend/package.json
+++ b/nifi-registry-web-ui/src/main/frontend/package.json
@@ -14,13 +14,16 @@
     "url": "https://github.com/apache/nifi-registry"
   },
   "dependencies": {
-    "@covalent/core": "1.0.0-beta.8-1",
-    "angular2-moment": "1.6.0",
-    "font-awesome": "4.7.0",
-    "moment": "2.18.1",
-    "roboto-fontface": "0.7.0"
-  },
-  "devDependencies": {
+    "querystring": "0.2.0",
+    "reset-css": "2.2.0",
+    "rxjs": "5.4.3",
+    "superagent": "3.6.3",
+    "systemjs": "0.20.17",
+    "systemjs-plugin-text": "0.0.11",
+    "zone.js": "0.8.7",
+    "tslib": "1.8.0",
+    "material-design-icons": "3.0.1",
+    "jquery": "3.2.1",
     "@angular/animations": "4.4.6",
     "@angular/cdk": "2.0.0-beta.12",
     "@angular/common": "4.4.6",
@@ -34,15 +37,21 @@
     "@angular/platform-browser-dynamic": "4.4.6",
     "@angular/router": "4.4.6",
     "angular2-jwt": "0.2.3",
+    "@covalent/core": "1.0.0-beta.8-1",
+    "angular2-moment": "1.6.0",
+    "font-awesome": "4.7.0",
+    "moment": "2.18.1",
+    "hammerjs": "2.0.8",
+    "roboto-fontface": "0.7.0"
+  },
+  "devDependencies": {
     "canonical-path": "0.0.2",
     "grunt": "0.4.5",
     "grunt-cli": "1.2.0",
     "grunt-contrib-compress": "1.4.3",
     "grunt-sass": "2.0.0",
     "grunt-systemjs-builder": "1.0.0",
-    "hammerjs": "2.0.8",
     "jasmine-core": "2.8.0",
-    "jquery": "3.2.1",
     "karma": "1.7.1",
     "karma-chrome-launcher": "2.2.0",
     "karma-cli": "1.0.1",
@@ -52,15 +61,7 @@
     "karma-spec-reporter": "0.0.31",
     "load-grunt-tasks": "3.5.2",
     "lodash": "4.16.2",
-    "material-design-icons": "3.0.1",
-    "protractor": "4.0.14",
-    "querystring": "0.2.0",
-    "reset-css": "2.2.0",
-    "rxjs": "5.4.3",
-    "superagent": "3.6.3",
-    "systemjs": "0.20.17",
-    "systemjs-plugin-text": "0.0.11",
-    "zone.js": "0.8.7"
+    "protractor": "4.0.14"
   },
   "bundleDependencies": [],
   "private": true

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/locale/messages.es.xlf
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/locale/messages.es.xlf b/nifi-registry-web-ui/src/main/locale/messages.es.xlf
index 9bee8cd..1839516 100644
--- a/nifi-registry-web-ui/src/main/locale/messages.es.xlf
+++ b/nifi-registry-web-ui/src/main/locale/messages.es.xlf
@@ -71,6 +71,18 @@
         <note priority="1" from="description">A button for cancelling the creation of a new user in the registry.</note>
         <note priority="1" from="meaning">Cancel creation of new user</note>
        </trans-unit>
+      <trans-unit id="nf-admin-workflow-cancel-create-bucket-button" datatype="html">
+         <source>Cancel</source>
+         <target state="new">Cancelar</target>
+        <note priority="1" from="description">A button for cancelling the creation of a new bucket in the registry.</note>
+        <note priority="1" from="meaning">Cancel creation of new bucket</note>
+       </trans-unit>
+      <trans-unit id="nf-admin-workflow-cancel-bucket-policy-creation-button" datatype="html">
+         <source>Cancel</source>
+         <target state="new">Cancelar</target>
+        <note priority="1" from="description">A button for cancelling the creation of a new bucket policy in the registry.</note>
+        <note priority="1" from="meaning">Cancel creation of new bucket policy</note>
+       </trans-unit>
       <trans-unit id="nf-clear-user-login-button" datatype="html">
          <source>Clear</source>
          <target state="new">Claro</target>
@@ -89,6 +101,18 @@
         <note priority="1" from="description">A button for creating a new group in the registry.</note>
         <note priority="1" from="meaning">Create new group button</note>
        </trans-unit>
+      <trans-unit id="nf-admin-workflow-create-bucket-button" datatype="html">
+         <source>Create</source>
+         <target state="new">Crear</target>
+        <note priority="1" from="description">A button for creating a new bucket in the registry.</note>
+        <note priority="1" from="meaning">Create new bucket button</note>
+       </trans-unit>
+      <trans-unit id="nf-admin-workflow-apply-policy-to-bucket-button" datatype="html">
+         <source>Apply</source>
+         <target state="new">Aplicar</target>
+        <note priority="1" from="description">A button for applying a new bucket policy in the registry.</note>
+        <note priority="1" from="meaning">Apply new bucket policy button</note>
+       </trans-unit>
       <trans-unit id="nf-admin-workflow-cancel-create-new-group-button" datatype="html">
          <source>Cancel</source>
          <target state="new">Cancelar</target>

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/platform/core/common/styles/_expansionPanels.scss
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/platform/core/common/styles/_expansionPanels.scss b/nifi-registry-web-ui/src/main/platform/core/common/styles/_expansionPanels.scss
index 9121c39..7b06102 100644
--- a/nifi-registry-web-ui/src/main/platform/core/common/styles/_expansionPanels.scss
+++ b/nifi-registry-web-ui/src/main/platform/core/common/styles/_expansionPanels.scss
@@ -42,10 +42,6 @@ body[fds] td-expansion-panel .td-expansion-panel-header .td-expansion-panel-head
   font-weight: bold;
 }
 
-body[fds] td-expansion-panel {
-  box-shadow: none;
-}
-
 body[fds] td-expansion-panel .td-expansion-panel-header:hover:not(.mat-disabled) {
   background: $blue4;
 }

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/platform/core/common/styles/_globalVars.scss
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/platform/core/common/styles/_globalVars.scss b/nifi-registry-web-ui/src/main/platform/core/common/styles/_globalVars.scss
index 77c6ee2..86df2ef 100644
--- a/nifi-registry-web-ui/src/main/platform/core/common/styles/_globalVars.scss
+++ b/nifi-registry-web-ui/src/main/platform/core/common/styles/_globalVars.scss
@@ -42,6 +42,7 @@ $grey9: #b2b8c1;
 $grey10: #dbdee2;
 $grey11: #2C3E44;
 $grey12: #EEEFF0;
+$grey13: #808793;
 $blue1: #1491C1;
 $blue2: #E7f6Fc;
 $blue3: #A7DFF2;

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/platform/core/common/styles/_menus.scss
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/platform/core/common/styles/_menus.scss b/nifi-registry-web-ui/src/main/platform/core/common/styles/_menus.scss
index 26a2333..5a0c6a9 100644
--- a/nifi-registry-web-ui/src/main/platform/core/common/styles/_menus.scss
+++ b/nifi-registry-web-ui/src/main/platform/core/common/styles/_menus.scss
@@ -21,11 +21,6 @@ body[fds] .mat-menu-panel {
   border-radius: 2px;
 }
 
-body[fds] .mat-menu-content {
-  padding-top: 0px;
-  padding-bottom: 0px;
-}
-
 body[fds] .mat-menu-item {
   font-size: 14px;
   color: $bodyTextColor;

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/platform/core/common/styles/_tables.scss
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/platform/core/common/styles/_tables.scss b/nifi-registry-web-ui/src/main/platform/core/common/styles/_tables.scss
index 904a176..02ab2bc 100644
--- a/nifi-registry-web-ui/src/main/platform/core/common/styles/_tables.scss
+++ b/nifi-registry-web-ui/src/main/platform/core/common/styles/_tables.scss
@@ -53,6 +53,11 @@ body[fds] .td-data-table-cell .mat-icon-button {
   color: $linkColor;
 }
 
+body[fds] .td-data-table-cell .mat-icon-button:disabled {
+  color:  $grey13;
+  cursor: not-allowed;
+}
+
 body[fds] .td-data-table-cell .mat-button, body[fds] .td-data-table-cell .mat-icon-button, body[fds] .td-data-table-cell .mat-raised-button {
   height: 24px;
   width: 24px;

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/webapp/WEB-INF/pages/index.jsp
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/WEB-INF/pages/index.jsp b/nifi-registry-web-ui/src/main/webapp/WEB-INF/pages/index.jsp
index 0e8a950..3a9a2c9 100644
--- a/nifi-registry-web-ui/src/main/webapp/WEB-INF/pages/index.jsp
+++ b/nifi-registry-web-ui/src/main/webapp/WEB-INF/pages/index.jsp
@@ -3,30 +3,30 @@
   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 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,
+  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.
 --%>
-<%@ page contentType="text/html" pageEncoding="UTF-8" session="false" %>
+<%@ page contentType='text/html' pageEncoding='UTF-8' session='false' %>
 <!DOCTYPE html>
 <html>
 <head>
     <title>NiFi Registry</title>
-    <base href="/">
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-    <link rel=”shortcut icon” href=”nifi-registry/images/registry-favicon.png” type=”image/png>
-    <link rel=”icon” href=”nifi-registry/images/registry-favicon.png” type=”image/png>
+    <base href='/'>
+    <meta charset='UTF-8'>
+    <meta name='viewport' content='width=device-width, initial-scale=1'>
+    <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/>
+    <link rel='shortcut icon' href='nifi-registry/images/registry-favicon.png' type='image/png'>
+    <link rel='icon' href='nifi-registry/images/registry-favicon.png' type='image/png'>
     ${nf.registry.style.tags}
-    <link rel="stylesheet" href='nifi-registry/node_modules/font-awesome/css/font-awesome.css'/>
+    <link rel='stylesheet' href='nifi-registry/node_modules/font-awesome/css/font-awesome.css'/>
 </head>
 <body>
 <nf-registry-app></nf-registry-app>

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/webapp/components/administration/nf-registry-administration.spec.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/administration/nf-registry-administration.spec.js b/nifi-registry-web-ui/src/main/webapp/components/administration/nf-registry-administration.spec.js
index 258ae06..593d3e2 100644
--- a/nifi-registry-web-ui/src/main/webapp/components/administration/nf-registry-administration.spec.js
+++ b/nifi-registry-web-ui/src/main/webapp/components/administration/nf-registry-administration.spec.js
@@ -34,7 +34,7 @@ var NfRegistryUsersAdministration = require('nifi-registry/components/administra
 var NfRegistryAddUser = require('nifi-registry/components/administration/users/dialogs/add-user/nf-registry-add-user.js');
 var NfRegistryManageUser = require('nifi-registry/components/administration/users/sidenav/manage-user/nf-registry-manage-user.js');
 var NfRegistryManageGroup = require('nifi-registry/components/administration/users/sidenav/manage-group/nf-registry-manage-group.js');
-var NfRegistryBucketPermissions = require('nifi-registry/components/administration/workflow/buckets/permissions/nf-registry-bucket-permissions.js');
+var NfRegistryManageBucket = require('nifi-registry/components/administration/workflow/sidenav/manage-bucket/nf-registry-manage-bucket.js');
 var NfRegistryWorkflowAdministration = require('nifi-registry/components/administration/workflow/nf-registry-workflow-administration.js');
 var NfRegistryGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.js');
 var NfRegistryBucketGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.js');
@@ -69,7 +69,7 @@ describe('NfRegistryAdministration Component', function () {
                 NfRegistryUsersAdministration,
                 NfRegistryManageUser,
                 NfRegistryManageGroup,
-                NfRegistryBucketPermissions,
+                NfRegistryManageBucket,
                 NfRegistryAddUser,
                 NfRegistryWorkflowAdministration,
                 NfRegistryGridListViewer,

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user-to-groups/nf-registry-add-user-to-groups.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user-to-groups/nf-registry-add-user-to-groups.js b/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user-to-groups/nf-registry-add-user-to-groups.js
index 7cb0f62..d6492a9 100644
--- a/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user-to-groups/nf-registry-add-user-to-groups.js
+++ b/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user-to-groups/nf-registry-add-user-to-groups.js
@@ -58,6 +58,12 @@ NfRegistryAddUserToGroups.prototype = {
     ngOnInit: function () {
         var self = this;
 
+        // filter out any groups that
+        // 1) that are not configurable
+        self.groups = self.groups.filter(function (group) {
+            return (group.configurable) ? true : false
+        });
+        // 2) the user already belongs to
         this.data.user.userGroups.forEach(function (userGroup) {
             self.groups = self.groups.filter(function (group) {
                 return (group.identifier !== userGroup.identifier) ? true : false

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user-to-groups/nf-registry-add-user-to-groups.spec.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user-to-groups/nf-registry-add-user-to-groups.spec.js b/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user-to-groups/nf-registry-add-user-to-groups.spec.js
index 018a9c1..8996a32 100644
--- a/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user-to-groups/nf-registry-add-user-to-groups.spec.js
+++ b/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user-to-groups/nf-registry-add-user-to-groups.spec.js
@@ -33,7 +33,7 @@ describe('NfRegistryAddUserToGroups Component isolated unit tests', function ()
         nfRegistryService = new NfRegistryService();
         // setup the nfRegistryService
         nfRegistryService.user = {identifier: 3, identity: 'User 3', userGroups: []};
-        nfRegistryService.groups = [{identifier: 1, identity: 'Group 1', checked: true, users: []}];
+        nfRegistryService.groups = [{identifier: 1, identity: 'Group 1', configurable: true, checked: true, users: []}];
 
         nfRegistryApi = new NfRegistryApi();
         snackBarService = new fdsSnackBarsModule.FdsSnackBarService();

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user/nf-registry-add-user.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user/nf-registry-add-user.js b/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user/nf-registry-add-user.js
index 2a31e33..bd6e978 100644
--- a/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user/nf-registry-add-user.js
+++ b/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/add-user/nf-registry-add-user.js
@@ -46,10 +46,14 @@ NfRegistryAddUser.prototype = {
     addUser: function (addUserInput) {
         var self = this;
         this.nfRegistryApi.addUser(addUserInput.value).subscribe(function (user) {
-            self.nfRegistryService.users.push(user);
-            self.nfRegistryService.allUsersAndGroupsSelected = false;
-            self.nfRegistryService.filterUsersAndGroups();
-            if (self.keepDialogOpen !== true) {
+            if (!user.error) {
+                self.nfRegistryService.users.push(user);
+                self.nfRegistryService.allUsersAndGroupsSelected = false;
+                self.nfRegistryService.filterUsersAndGroups();
+                if (self.keepDialogOpen !== true) {
+                    self.dialogRef.close();
+                }
+            } else {
                 self.dialogRef.close();
             }
         });

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/create-new-group/nf-registry-create-new-group.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/create-new-group/nf-registry-create-new-group.js b/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/create-new-group/nf-registry-create-new-group.js
index d3a574e..a992f78 100644
--- a/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/create-new-group/nf-registry-create-new-group.js
+++ b/nifi-registry-web-ui/src/main/webapp/components/administration/users/dialogs/create-new-group/nf-registry-create-new-group.js
@@ -47,10 +47,14 @@ NfRegistryCreateNewGroup.prototype = {
         var self = this;
         // create new group with any selected users added to the new group
         this.nfRegistryApi.createNewGroup(null, createNewGroupInput.value, this.nfRegistryService.getSelectedUsers()).subscribe(function (group) {
-            self.nfRegistryService.groups.push(group);
-            self.nfRegistryService.filterUsersAndGroups();
-            self.nfRegistryService.allUsersAndGroupsSelected = false;
-            if (self.keepDialogOpen !== true) {
+            if (!group.error) {
+                self.nfRegistryService.groups.push(group);
+                self.nfRegistryService.filterUsersAndGroups();
+                self.nfRegistryService.allUsersAndGroupsSelected = false;
+                if (self.keepDialogOpen !== true) {
+                    self.dialogRef.close();
+                }
+            } else {
                 self.dialogRef.close();
             }
         });

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-administration.html
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-administration.html b/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-administration.html
index 59e8cfd..1028d98 100644
--- a/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-administration.html
+++ b/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-administration.html
@@ -19,7 +19,8 @@ limitations under the License.
     <div fxFlex class="pad-top-md pad-bottom-sm pad-left-md pad-right-md">
         <span class="md-card-title">Authorized Users ({{nfRegistryService.users.length + nfRegistryService.groups.length}})</span>
         <div flex class="push-right-sm" fxLayout="row" fxLayoutAlign="end center">
-            <td-chips class="push-right-sm" [items]="nfRegistryService.autoCompleteUsersAndGroups"
+            <td-chips class="push-right-sm"
+                      [items]="nfRegistryService.autoCompleteUsersAndGroups"
                       (add)="nfRegistryService.usersSearchAdd($event)"
                       (remove)="nfRegistryService.usersSearchRemove($event)"></td-chips>
             <button class="push-top-sm push-right-sm" color="fds-secondary" mat-raised-button (click)="addUser()">
@@ -31,15 +32,19 @@ limitations under the License.
             </button>
         </div>
         <mat-menu class="fds-primary-dropdown-button-menu" #userActionMenu="matMenu" [overlapTrigger]="false">
-            <button mat-menu-item
-                    [disabled]="(nfRegistryService.getSelectedGroups().length === 0) && (nfRegistryService.getSelectedUsers().length === 0)"
+            <div matTooltip="{{nfRegistryService.disableMultiDeleteAction ? 'Please deselect any non-configurable users or groups to enable multi-delete.': ''}}">
+                <button mat-menu-item
+                    [disabled]="((nfRegistryService.getSelectedGroups().length === 0) && (nfRegistryService.getSelectedUsers().length === 0)) || nfRegistryService.disableMultiDeleteAction"
                     (click)="nfRegistryService.deleteSelectedUsersAndGroups()">
-                <span>Delete</span>
-            </button>
-            <button mat-menu-item [disabled]="(nfRegistryService.getSelectedGroups().length > 0)"
+                    <span>Delete</span>
+                </button>
+            </div>
+            <div matTooltip="{{(nfRegistryService.getSelectedGroups().length > 0) ? 'Only users can be added when creating a new group. Please deselect any groups to enable.': ''}}">
+                <button mat-menu-item [disabled]="(nfRegistryService.getSelectedGroups().length > 0)"
                     (click)="createNewGroup()">
-                <span>Create new group</span>
-            </button>
+                    <span>Create new group</span>
+                </button>
+            </div>
         </mat-menu>
         <div id="nifi-registry-users-administration-list-container-column-header" fxLayout="row"
              fxLayoutAlign="space-between center" class="td-data-table">
@@ -61,11 +66,12 @@ limitations under the License.
             </div>
         </div>
         <div id="nifi-registry-users-administration-list-container">
-            <div [ngClass]="{'selected' : row.checked}" *ngFor="let row of nfRegistryService.filteredUserGroups"
+            <div [ngClass]="{'nonconfigurable' : row.configurable === false, 'selected-nonconfigurable' : (row.checked === true && row.configurable === false), 'selected' : row.checked === true}"
+                 *ngFor="let row of nfRegistryService.filteredUserGroups"
                  (click)="row.checked = !row.checked;nfRegistryService.determineAllUsersAndGroupsSelectedState(row)">
                 <div *ngFor="let column of nfRegistryService.userColumns" fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row">
                     <div class="td-data-table-cell" fxFlex="{{column.width}}">
-                        <div>
+                        <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>
@@ -75,7 +81,7 @@ limitations under the License.
                                 <button (click)="row.checked = !row.checked;nfRegistryService.executeGroupAction(action, row)"
                                         *ngFor="let action of nfRegistryService.userGroupsActions"
                                         matTooltip="{{action.tooltip}}" mat-icon-button color="accent"
-                                        [disabled]="action.disabled ? '' : null">
+                                        [disabled]="action.disabled(row)">
                                     <i class="{{action.icon}}" aria-hidden="true"></i>
                                 </button>
                                 <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked"
@@ -91,7 +97,7 @@ limitations under the License.
                                     <button (click)="nfRegistryService.executeGroupAction(action, row)"
                                             *ngFor="let action of nfRegistryService.userGroupsActions"
                                             matTooltip="{{action.tooltip}}" mat-menu-item
-                                            [disabled]="action.disabled ? '' : null"
+                                            [disabled]="action.disabled(row)">
                                             (click)="nfRegistryService.sidenav.toggle()">
                                         <i class="{{action.icon}}" aria-hidden="true"></i>
                                         <span>{{action.name}}</span>
@@ -110,11 +116,12 @@ limitations under the License.
                     </div>
                 </div>
             </div>
-            <div [ngClass]="{'selected' : row.checked}" *ngFor="let row of nfRegistryService.filteredUsers"
+            <div [ngClass]="{'nonconfigurable' : row.configurable === false, 'selected-nonconfigurable' : (row.checked === true && row.configurable === false), 'selected' : row.checked === true}"
+                 *ngFor="let row of nfRegistryService.filteredUsers"
                  (click)="row.checked = !row.checked;nfRegistryService.determineAllUsersAndGroupsSelectedState(row)">
                 <div *ngFor="let column of nfRegistryService.userColumns" fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row">
                     <div class="td-data-table-cell" fxFlex="{{column.width}}">
-                        <div>
+                        <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>
@@ -124,7 +131,7 @@ limitations under the License.
                                 <button (click)="row.checked = !row.checked;nfRegistryService.executeUserAction(action, row)"
                                         *ngFor="let action of nfRegistryService.usersActions"
                                         matTooltip="{{action.tooltip}}" mat-icon-button color="accent"
-                                        [disabled]="action.disabled ? '' : null">
+                                        [disabled]="action.disabled(row)">
                                     <i class="{{action.icon}}" aria-hidden="true"></i>
                                 </button>
                                 <mat-checkbox class="pad-left-sm" [(ngModel)]="row.checked" [checked]="row.checked"
@@ -140,7 +147,7 @@ limitations under the License.
                                     <button (click)="nfRegistryService.executeUserAction(action, row)"
                                             *ngFor="let action of nfRegistryService.usersActions"
                                             matTooltip="{{action.tooltip}}" mat-menu-item
-                                            [disabled]="action.disabled ? '' : null"
+                                            [disabled]="action.disabled(row)">
                                             (click)="nfRegistryService.sidenav.toggle()">
                                         <i class="{{action.icon}}" aria-hidden="true"></i>
                                         <span>{{action.name}}</span>

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-administration.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-administration.js b/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-administration.js
index 2cc8ff1..e39a107 100644
--- a/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-administration.js
+++ b/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-administration.js
@@ -55,7 +55,7 @@ NfRegistryUsersAdministration.prototype = {
     ngOnInit: function () {
         var self = this;
         this.nfRegistryService.inProgress = true;
-        this.route.params
+        this.$subscription = this.route.params
             .switchMap(function (params) {
                 self.nfRegistryService.adminPerspective = 'users';
                 return new rxjs.Observable.forkJoin(
@@ -81,20 +81,25 @@ NfRegistryUsersAdministration.prototype = {
         this.nfRegistryService.users = this.nfRegistryService.filteredUsers = [];
         this.nfRegistryService.groups = this.nfRegistryService.filteredUserGroups = [];
         this.nfRegistryService.allUsersAndGroupsSelected = false;
+        this.$subscription.unsubscribe();
     },
 
     /**
      * Opens the create new bucket dialog.
      */
     addUser: function () {
-        this.dialog.open(NfRegistryAddUser);
+        this.dialog.open(NfRegistryAddUser, {
+            disableClose: true
+        });
     },
 
     /**
      * Opens the create new group dialog.
      */
     createNewGroup: function () {
-        this.dialog.open(NfRegistryCreateNewGroup);
+        this.dialog.open(NfRegistryCreateNewGroup, {
+            disableClose: true
+        });
     }
 };
 

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-adminstration.spec.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-adminstration.spec.js b/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-adminstration.spec.js
index 9260dc3..31ea559 100644
--- a/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-adminstration.spec.js
+++ b/nifi-registry-web-ui/src/main/webapp/components/administration/users/nf-registry-users-adminstration.spec.js
@@ -32,9 +32,9 @@ var NfRegistryUsersAdministration = require('nifi-registry/components/administra
 var NfRegistryAddUser = require('nifi-registry/components/administration/users/dialogs/add-user/nf-registry-add-user.js');
 var NfRegistryManageUser = require('nifi-registry/components/administration/users/sidenav/manage-user/nf-registry-manage-user.js');
 var NfRegistryManageGroup = require('nifi-registry/components/administration/users/sidenav/manage-group/nf-registry-manage-group.js');
-var NfRegistryBucketPermissions = require('nifi-registry/components/administration/workflow/buckets/permissions/nf-registry-bucket-permissions.js');
+var NfRegistryManageBucket = require('nifi-registry/components/administration/workflow/sidenav/manage-bucket/nf-registry-manage-bucket.js');
 var NfRegistryWorkflowAdministration = require('nifi-registry/components/administration/workflow/nf-registry-workflow-administration.js');
-var NfRegistryCreateBucket = require('nifi-registry/components/administration/workflow/dialogs/nf-registry-create-bucket.js');
+var NfRegistryCreateBucket = require('nifi-registry/components/administration/workflow/dialogs/create-bucket/nf-registry-create-bucket.js');
 var NfRegistryGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-grid-list-viewer.js');
 var NfRegistryBucketGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-bucket-grid-list-viewer.js');
 var NfRegistryDropletGridListViewer = require('nifi-registry/components/explorer/grid-list/registry/nf-registry-droplet-grid-list-viewer.js');
@@ -73,7 +73,7 @@ describe('NfRegistryUsersAdministration Component', function () {
                 NfRegistryUsersAdministration,
                 NfRegistryManageUser,
                 NfRegistryManageGroup,
-                NfRegistryBucketPermissions,
+                NfRegistryManageBucket,
                 NfRegistryAddUser,
                 NfRegistryWorkflowAdministration,
                 NfRegistryCreateBucket,

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/webapp/components/administration/users/sidenav/manage-group/nf-registry-manage-group.html
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/administration/users/sidenav/manage-group/nf-registry-manage-group.html b/nifi-registry-web-ui/src/main/webapp/components/administration/users/sidenav/manage-group/nf-registry-manage-group.html
index f9e2138..735dd95 100644
--- a/nifi-registry-web-ui/src/main/webapp/components/administration/users/sidenav/manage-group/nf-registry-manage-group.html
+++ b/nifi-registry-web-ui/src/main/webapp/components/administration/users/sidenav/manage-group/nf-registry-manage-group.html
@@ -17,133 +17,183 @@ 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.group.identity}}</span>
+        <span class="md-card-title ellipsis"><i class="fa fa-users push-right-sm" aria-hidden="true"></i>{{nfRegistryService.group.identity}}</span>
         <button mat-icon-button (click)="closeSideNav()">
             <mat-icon color="primary">close</mat-icon>
         </button>
     </div>
-    <div class="pad-bottom-md pad-left-md pad-right-md" flex fxLayoutAlign="start center">
-        <mat-input-container flex>
-            <input #groupnameInput matInput [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite" placeholder="Identity/Group Name" value="{{nfRegistryService.group.identity}}"
-                   [(ngModel)]="_groupname">
-        </mat-input-container>
-        <button [disabled]="nfRegistryService.group.identity === _groupname"
-                (click)="updateGroupName(groupnameInput.value)"
-                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>
+    <div class="sidenav-content">
+        <div class="pad-bottom-md pad-left-md pad-right-md" flex fxLayoutAlign="start center">
+            <mat-input-container flex>
+                <input #groupnameInput matInput
+                       [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite || !nfRegistryService.group.configurable"
+                       placeholder="Identity/Group Name"
+                       value="{{nfRegistryService.group.identity}}"
+                       [(ngModel)]="_groupname">
+            </mat-input-container>
+            <button [disabled]="nfRegistryService.group.identity === _groupname || !nfRegistryService.group.configurable"
+                    (click)="updateGroupName(groupnameInput.value)"
+                    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="Allows a group to manage NiFi Registry users and groups, buckets, proxies, and policies."
+                <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]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite" [checked]="nfRegistryService.group.resourcePermissions.buckets.canRead && nfRegistryService.group.resourcePermissions.buckets.canWrite && nfRegistryService.group.resourcePermissions.buckets.canDelete" (change)="toggleGroupManageBucketsPrivileges($event)">
-            <span class="description">Can manage buckets</span>
-        </mat-checkbox>
-        <div flex fxLayout="row" fxLayoutAlign="space-around center">
-            <mat-checkbox class="pad-left-md" [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite" [(checked)]="nfRegistryService.group.resourcePermissions.buckets.canRead" (change)="toggleGroupManageBucketsPrivileges($event, 'read')">
-                <span class="description">Read</span>
-            </mat-checkbox>
-            <mat-checkbox class="pad-left-md" [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite" [(checked)]="nfRegistryService.group.resourcePermissions.buckets.canWrite" (change)="toggleGroupManageBucketsPrivileges($event, 'write')">
-                <span class="description">Write</span>
-            </mat-checkbox>
-            <mat-checkbox class="pad-left-md" [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite" [(checked)]="nfRegistryService.group.resourcePermissions.buckets.canDelete" (change)="toggleGroupManageBucketsPrivileges($event, 'delete')">
-                <span class="description">Delete</span>
-            </mat-checkbox>
-        </div>
-        <mat-checkbox [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite" [checked]="nfRegistryService.group.resourcePermissions.tenants.canRead && nfRegistryService.group.resourcePermissions.tenants.canWrite && nfRegistryService.group.resourcePermissions.tenants.canDelete" (change)="toggleGroupManageTenantsPrivileges($event)">
-            <span class="description">Can manage users</span>
-        </mat-checkbox>
-        <div flex fxLayout="row" fxLayoutAlign="space-around center">
-            <mat-checkbox class="pad-left-md" [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite" [(checked)]="nfRegistryService.group.resourcePermissions.tenants.canRead" (change)="toggleGroupManageTenantsPrivileges($event, 'read')">
-                <span class="description">Read</span>
-            </mat-checkbox>
-            <mat-checkbox class="pad-left-md" [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite" [(checked)]="nfRegistryService.group.resourcePermissions.tenants.canWrite" (change)="toggleGroupManageTenantsPrivileges($event, 'write')">
-                <span class="description">Write</span>
-            </mat-checkbox>
-            <mat-checkbox class="pad-left-md" [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite" [(checked)]="nfRegistryService.group.resourcePermissions.tenants.canDelete" (change)="toggleGroupManageTenantsPrivileges($event, 'delete')">
-                <span class="description">Delete</span>
+            </div>
+            <mat-checkbox [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite"
+                          [checked]="nfRegistryService.group.resourcePermissions.buckets.canRead && nfRegistryService.group.resourcePermissions.buckets.canWrite && nfRegistryService.group.resourcePermissions.buckets.canDelete"
+                          (change)="toggleGroupManageBucketsPrivileges($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>
-        <mat-checkbox [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite" [checked]="nfRegistryService.group.resourcePermissions.policies.canRead && nfRegistryService.group.resourcePermissions.policies.canWrite && nfRegistryService.group.resourcePermissions.policies.canDelete" (change)="toggleGroupManagePoliciesPrivileges($event)">
-            <span class="description">Can manage policies</span>
-        </mat-checkbox>
-        <div flex fxLayout="row" fxLayoutAlign="space-around center">
-            <mat-checkbox class="pad-left-md" [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite" [(checked)]="nfRegistryService.group.resourcePermissions.policies.canRead" (change)="toggleGroupManagePoliciesPrivileges($event, 'read')">
-                <span class="description">Read</span>
+            <div flex fxLayout="row" fxLayoutAlign="space-around center">
+                <mat-checkbox class="pad-left-md"
+                              [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite"
+                              [(checked)]="nfRegistryService.group.resourcePermissions.buckets.canRead"
+                              (change)="toggleGroupManageBucketsPrivileges($event, 'read')">
+                    <span class="description">Read</span>
+                </mat-checkbox>
+                <mat-checkbox class="pad-left-md"
+                              [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite"
+                              [(checked)]="nfRegistryService.group.resourcePermissions.buckets.canWrite"
+                              (change)="toggleGroupManageBucketsPrivileges($event, 'write')">
+                    <span class="description">Write</span>
+                </mat-checkbox>
+                <mat-checkbox class="pad-left-md"
+                              [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite"
+                              [(checked)]="nfRegistryService.group.resourcePermissions.buckets.canDelete"
+                              (change)="toggleGroupManageBucketsPrivileges($event, 'delete')">
+                    <span class="description">Delete</span>
+                </mat-checkbox>
+            </div>
+            <mat-checkbox [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite"
+                          [checked]="nfRegistryService.group.resourcePermissions.tenants.canRead && nfRegistryService.group.resourcePermissions.tenants.canWrite && nfRegistryService.group.resourcePermissions.tenants.canDelete"
+                          (change)="toggleGroupManageTenantsPrivileges($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>
-            <mat-checkbox class="pad-left-md" [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite" [(checked)]="nfRegistryService.group.resourcePermissions.policies.canWrite" (change)="toggleGroupManagePoliciesPrivileges($event, 'write')">
-                <span class="description">Write</span>
+            <div flex fxLayout="row" fxLayoutAlign="space-around center">
+                <mat-checkbox class="pad-left-md"
+                              [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite"
+                              [(checked)]="nfRegistryService.group.resourcePermissions.tenants.canRead"
+                              (change)="toggleGroupManageTenantsPrivileges($event, 'read')">
+                    <span class="description">Read</span>
+                </mat-checkbox>
+                <mat-checkbox class="pad-left-md"
+                              [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite"
+                              [(checked)]="nfRegistryService.group.resourcePermissions.tenants.canWrite"
+                              (change)="toggleGroupManageTenantsPrivileges($event, 'write')">
+                    <span class="description">Write</span>
+                </mat-checkbox>
+                <mat-checkbox class="pad-left-md"
+                              [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite"
+                              [(checked)]="nfRegistryService.group.resourcePermissions.tenants.canDelete"
+                              (change)="toggleGroupManageTenantsPrivileges($event, 'delete')">
+                    <span class="description">Delete</span>
+                </mat-checkbox>
+            </div>
+            <mat-checkbox [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite"
+                          [checked]="nfRegistryService.group.resourcePermissions.policies.canRead && nfRegistryService.group.resourcePermissions.policies.canWrite && nfRegistryService.group.resourcePermissions.policies.canDelete"
+                          (change)="toggleGroupManagePoliciesPrivileges($event)">
+            <span class="description">Can manage policies<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>
             </mat-checkbox>
-            <mat-checkbox class="pad-left-md" [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite" [(checked)]="nfRegistryService.group.resourcePermissions.policies.canDelete" (change)="toggleGroupManagePoliciesPrivileges($event, 'delete')">
-                <span class="description">Delete</span>
+            <div flex fxLayout="row" fxLayoutAlign="space-around center">
+                <mat-checkbox class="pad-left-md"
+                              [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite"
+                              [(checked)]="nfRegistryService.group.resourcePermissions.policies.canRead"
+                              (change)="toggleGroupManagePoliciesPrivileges($event, 'read')">
+                    <span class="description">Read</span>
+                </mat-checkbox>
+                <mat-checkbox class="pad-left-md"
+                              [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite"
+                              [(checked)]="nfRegistryService.group.resourcePermissions.policies.canWrite"
+                              (change)="toggleGroupManagePoliciesPrivileges($event, 'write')">
+                    <span class="description">Write</span>
+                </mat-checkbox>
+                <mat-checkbox class="pad-left-md"
+                              [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite"
+                              [(checked)]="nfRegistryService.group.resourcePermissions.policies.canDelete"
+                              (change)="toggleGroupManagePoliciesPrivileges($event, 'delete')">
+                    <span class="description">Delete</span>
+                </mat-checkbox>
+            </div>
+            <mat-checkbox [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite"
+                          [checked]="nfRegistryService.group.resourcePermissions.proxy.canWrite"
+                          (change)="toggleGroupManageProxyPrivileges($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-checkbox [disabled]="!nfRegistryService.currentUser.resourcePermissions.policies.canWrite" [checked]="nfRegistryService.group.resourcePermissions.proxy.canWrite" (change)="toggleGroupManageProxyPrivileges($event)">
-            <span class="description">Can proxy user requests</span>
-        </mat-checkbox>
-    </div>
-    <mat-button-toggle-group name="nifi-registry-manage-group-perspective" class="pad-left-md tab-toggle-group">
-        <mat-button-toggle [checked]="manageGroupPerspective === 'membership'"
-                           value="membership"
-                           class="uppercase"
-                           (change)="manageGroupPerspective = 'membership'"
-                           i18n="User membership tab, group management sidenav|View the users that belong to this group.@@nf-admin-group-management-sidenav-membership-tab-title">
-            Membership
-        </mat-button-toggle>
-    </mat-button-toggle-group>
-    <div *ngIf="manageGroupPerspective === 'membership'">
-        <div *ngIf="nfRegistryService.group.users" fxFlex 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.group.users.length}})</span>
-                <button color="fds-secondary"
-                        [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite"
-                        mat-raised-button
-                        (click)="addUsersToGroup()">
-                    Add Users
-                </button>
-            </div>
-            <div id="nifi-registry-group-membership-list-container-column-header" fxLayout="row"
-                 fxLayoutAlign="space-between center" class="td-data-table">
-                <div class="td-data-table-column" (click)="sortUsers(column)"
-                     *ngFor="let column of nfRegistryService.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>
+        <mat-button-toggle-group name="nifi-registry-manage-group-perspective" class="pad-left-md tab-toggle-group">
+            <mat-button-toggle [checked]="manageGroupPerspective === 'membership'"
+                               value="membership"
+                               class="uppercase"
+                               (change)="manageGroupPerspective = 'membership'"
+                               i18n="User membership tab, group management sidenav|View the users that belong to this group.@@nf-admin-group-management-sidenav-membership-tab-title">
+                Membership
+            </mat-button-toggle>
+        </mat-button-toggle-group>
+        <div *ngIf="manageGroupPerspective === 'membership'">
+            <div *ngIf="nfRegistryService.group.users" 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.group.users.length}})</span>
+                    <button color="fds-secondary"
+                            [disabled]="!nfRegistryService.currentUser.resourcePermissions.tenants.canWrite || !nfRegistryService.group.configurable"
+                            mat-raised-button
+                            (click)="addUsersToGroup()">
+                        Add Users
+                    </button>
                 </div>
-            </div>
-            <div id="nifi-registry-group-membership-list-container">
-                <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row"
-                     [ngClass]="{'selected' : row.checked}" *ngFor="let row of filteredUsers"
-                     (click)="row.checked = !row.checked">
-                    <div class="td-data-table-cell" *ngFor="let column of nfRegistryService.userGroupsColumns"
+                <div id="nifi-registry-group-membership-list-container-column-header" fxLayout="row"
+                     fxLayoutAlign="space-between center" class="td-data-table">
+                    <div class="td-data-table-column" (click)="sortUsers(column)"
+                         *ngFor="let column of nfRegistryService.userGroupsColumns"
                          fxFlex="{{column.width}}">
-                        <div matTooltip="{{column.format ? column.format(row[column.name]) : row[column.name]}}">
-                            {{column.format ? column.format(row[column.name]) : row[column.name]}}
-                        </div>
+                        {{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-cell">
-                        <div>
-                            <button (click)="removeUserFromGroup(row);row.checked = !row.checked;"
-                                    matTooltip="'Remove user from group'" mat-icon-button color="accent"
-                                    *ngIf="nfRegistryService.currentUser.resourcePermissions.tenants.canWrite">
-                                <i class="fa fa-minus-circle" aria-hidden="true"></i>
-                            </button>
+                </div>
+                <div id="nifi-registry-group-membership-list-container">
+                    <div fxLayout="row" fxLayoutAlign="space-between center" class="td-data-table-row"
+                         [ngClass]="{'selected' : row.checked}" *ngFor="let row of filteredUsers"
+                         (click)="row.checked = !row.checked">
+                        <div class="td-data-table-cell" *ngFor="let column of nfRegistryService.userGroupsColumns"
+                             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">
+                            <div>
+                                <button (click)="removeUserFromGroup(row);row.checked = !row.checked;"
+                                        [disabled]="!nfRegistryService.group.configurable"
+                                        matTooltip="'Remove user from group'" mat-icon-button color="accent">
+                                    <i class="fa fa-minus-circle" aria-hidden="true"></i>
+                                </button>
+                            </div>
                         </div>
                     </div>
                 </div>
-            </div>
-            <div class="mat-padding" *ngIf="nfRegistryService.group.users.length === 0" layout="row"
-                 layout-align="center center">
-                <h3>This group does not have any users yet.</h3>
+                <div class="mat-padding" *ngIf="nfRegistryService.group.users.length === 0" layout="row"
+                     layout-align="center center">
+                    <h3>This group does not have any users yet.</h3>
+                </div>
             </div>
         </div>
     </div>

http://git-wip-us.apache.org/repos/asf/nifi-registry/blob/6c48025c/nifi-registry-web-ui/src/main/webapp/components/administration/users/sidenav/manage-group/nf-registry-manage-group.js
----------------------------------------------------------------------
diff --git a/nifi-registry-web-ui/src/main/webapp/components/administration/users/sidenav/manage-group/nf-registry-manage-group.js b/nifi-registry-web-ui/src/main/webapp/components/administration/users/sidenav/manage-group/nf-registry-manage-group.js
index a519887..9aaa684 100644
--- a/nifi-registry-web-ui/src/main/webapp/components/administration/users/sidenav/manage-group/nf-registry-manage-group.js
+++ b/nifi-registry-web-ui/src/main/webapp/components/administration/users/sidenav/manage-group/nf-registry-manage-group.js
@@ -66,7 +66,7 @@ NfRegistryManageGroup.prototype = {
         this.nfRegistryService.sidenav.open();
 
         // subscribe to the route params
-        self.route.params
+        this.$subscription = self.route.params
             .switchMap(function (params) {
                 return self.nfRegistryApi.getUserGroup(params['groupId']);
             })
@@ -82,6 +82,7 @@ NfRegistryManageGroup.prototype = {
      */
     ngOnDestroy: function () {
         this.nfRegistryService.sidenav.close();
+        this.$subscription.unsubscribe();
     },
 
     /**
@@ -105,14 +106,14 @@ NfRegistryManageGroup.prototype = {
                     this.nfRegistryService.BUCKETS_PRIVS[resource].forEach(function (action) {
                         if (!policyAction || (action === policyAction)) {
                             self.nfRegistryApi.getPolicyActionResource(action, resource).subscribe(function (policy) {
-                                if (policy.status && policy.status === 409) {
+                                if (policy.status && policy.status === 404) {
                                     // resource does NOT exist, let's create it
                                     self.nfRegistryApi.postPolicyActionResource(action, resource, self.nfRegistryService.group.users, []).subscribe(
                                         function (response) {
                                             // can manage buckets privileges created and granted!!!...now update the view
                                             response.userGroups.forEach(function (group) {
                                                 if (group.identifier === self.nfRegistryService.group.identifier) {
-                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function(response) {
+                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function (response) {
                                                         self.nfRegistryService.group = response;
                                                     });
                                                 }
@@ -127,7 +128,7 @@ NfRegistryManageGroup.prototype = {
                                             // can manage buckets privileges updated!!!...now update the view
                                             response.userGroups.forEach(function (group) {
                                                 if (group.identifier === self.nfRegistryService.group.identifier) {
-                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function(response) {
+                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function (response) {
                                                         self.nfRegistryService.group = response;
                                                     });
                                                 }
@@ -146,7 +147,7 @@ NfRegistryManageGroup.prototype = {
                     this.nfRegistryService.BUCKETS_PRIVS[resource].forEach(function (action) {
                         if (!policyAction || (action === policyAction)) {
                             self.nfRegistryApi.getPolicyActionResource(action, resource).subscribe(function (policy) {
-                                if (policy.status && policy.status === 409) {
+                                if (policy.status && policy.status === 404) {
                                     // resource does NOT exist
                                 } else {
                                     // resource exists, let's filter out the current group and update it
@@ -157,7 +158,7 @@ NfRegistryManageGroup.prototype = {
                                         policy.resource, policy.users, policy.userGroups).subscribe(
                                         function (response) {
                                             // can manage buckets privileges updated!!!...now update the view
-                                            self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function(response) {
+                                            self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function (response) {
                                                 self.nfRegistryService.group = response;
                                             });
                                         });
@@ -167,7 +168,6 @@ NfRegistryManageGroup.prototype = {
                     });
                 }
             }
-
         }
     },
 
@@ -185,14 +185,14 @@ NfRegistryManageGroup.prototype = {
                     this.nfRegistryService.TENANTS_PRIVS[resource].forEach(function (action) {
                         if (!policyAction || (action === policyAction)) {
                             self.nfRegistryApi.getPolicyActionResource(action, resource).subscribe(function (policy) {
-                                if (policy.status && policy.status === 409) {
+                                if (policy.status && policy.status === 404) {
                                     // resource does NOT exist, let's create it
                                     self.nfRegistryApi.postPolicyActionResource(action, resource, self.nfRegistryService.group.users, []).subscribe(
                                         function (response) {
                                             // can manage tenants privileges created and granted!!!...now update the view
                                             response.userGroups.forEach(function (group) {
                                                 if (group.identifier === self.nfRegistryService.group.identifier) {
-                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function(response) {
+                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function (response) {
                                                         self.nfRegistryService.group = response;
                                                     });
                                                 }
@@ -207,7 +207,7 @@ NfRegistryManageGroup.prototype = {
                                             // can manage tenants privileges updated!!!...now update the view
                                             response.userGroups.forEach(function (group) {
                                                 if (group.identifier === self.nfRegistryService.group.identifier) {
-                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function(response) {
+                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function (response) {
                                                         self.nfRegistryService.group = response;
                                                     });
                                                 }
@@ -226,7 +226,7 @@ NfRegistryManageGroup.prototype = {
                     this.nfRegistryService.TENANTS_PRIVS[resource].forEach(function (action) {
                         if (!policyAction || (action === policyAction)) {
                             self.nfRegistryApi.getPolicyActionResource(action, resource).subscribe(function (policy) {
-                                if (policy.status && policy.status === 409) {
+                                if (policy.status && policy.status === 404) {
                                     // resource does NOT exist
                                 } else {
                                     // resource exists, let's filter out the current group and update it
@@ -237,7 +237,7 @@ NfRegistryManageGroup.prototype = {
                                         policy.resource, policy.users, policy.userGroups).subscribe(
                                         function (response) {
                                             // can manage tenants privileges updated!!!...now update the view
-                                            self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function(response) {
+                                            self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function (response) {
                                                 self.nfRegistryService.group = response;
                                             });
                                         });
@@ -247,7 +247,6 @@ NfRegistryManageGroup.prototype = {
                     });
                 }
             }
-
         }
     },
 
@@ -265,14 +264,14 @@ NfRegistryManageGroup.prototype = {
                     this.nfRegistryService.POLICIES_PRIVS[resource].forEach(function (action) {
                         if (!policyAction || (action === policyAction)) {
                             self.nfRegistryApi.getPolicyActionResource(action, resource).subscribe(function (policy) {
-                                if (policy.status && policy.status === 409) {
+                                if (policy.status && policy.status === 404) {
                                     // resource does NOT exist, let's create it
                                     self.nfRegistryApi.postPolicyActionResource(action, resource, self.nfRegistryService.group.users, []).subscribe(
                                         function (response) {
                                             // can manage policies privileges created and granted!!!...now update the view
                                             response.userGroups.forEach(function (group) {
                                                 if (group.identifier === self.nfRegistryService.group.identifier) {
-                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function(response) {
+                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function (response) {
                                                         self.nfRegistryService.group = response;
                                                     });
                                                 }
@@ -287,7 +286,7 @@ NfRegistryManageGroup.prototype = {
                                             // can manage policies privileges updated!!!...now update the view
                                             response.userGroups.forEach(function (group) {
                                                 if (group.identifier === self.nfRegistryService.group.identifier) {
-                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function(response) {
+                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function (response) {
                                                         self.nfRegistryService.group = response;
                                                     });
                                                 }
@@ -306,7 +305,7 @@ NfRegistryManageGroup.prototype = {
                     this.nfRegistryService.POLICIES_PRIVS[resource].forEach(function (action) {
                         if (!policyAction || (action === policyAction)) {
                             self.nfRegistryApi.getPolicyActionResource(action, resource).subscribe(function (policy) {
-                                if (policy.status && policy.status === 409) {
+                                if (policy.status && policy.status === 404) {
                                     // resource does NOT exist
                                 } else {
                                     // resource exists, let's filter out the current group and update it
@@ -317,7 +316,7 @@ NfRegistryManageGroup.prototype = {
                                         policy.resource, policy.users, policy.userGroups).subscribe(
                                         function (response) {
                                             // can manage policies privileges updated!!!...now update the view
-                                            self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function(response) {
+                                            self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function (response) {
                                                 self.nfRegistryService.group = response;
                                             });
                                         });
@@ -327,7 +326,6 @@ NfRegistryManageGroup.prototype = {
                     });
                 }
             }
-
         }
     },
 
@@ -345,14 +343,14 @@ NfRegistryManageGroup.prototype = {
                     this.nfRegistryService.PROXY_PRIVS[resource].forEach(function (action) {
                         if (!policyAction || (action === policyAction)) {
                             self.nfRegistryApi.getPolicyActionResource(action, resource).subscribe(function (policy) {
-                                if (policy.status && policy.status === 409) {
+                                if (policy.status && policy.status === 404) {
                                     // resource does NOT exist, let's create it
                                     self.nfRegistryApi.postPolicyActionResource(action, resource, self.nfRegistryService.group.users, []).subscribe(
                                         function (response) {
                                             // can manage proxy privileges created and granted!!!...now update the view
                                             response.userGroups.forEach(function (group) {
                                                 if (group.identifier === self.nfRegistryService.group.identifier) {
-                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function(response) {
+                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function (response) {
                                                         self.nfRegistryService.group = response;
                                                     });
                                                 }
@@ -367,7 +365,7 @@ NfRegistryManageGroup.prototype = {
                                             // can manage proxy privileges updated!!!...now update the view
                                             response.userGroups.forEach(function (group) {
                                                 if (group.identifier === self.nfRegistryService.group.identifier) {
-                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function(response) {
+                                                    self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function (response) {
                                                         self.nfRegistryService.group = response;
                                                     });
                                                 }
@@ -386,7 +384,7 @@ NfRegistryManageGroup.prototype = {
                     this.nfRegistryService.PROXY_PRIVS[resource].forEach(function (action) {
                         if (!policyAction || (action === policyAction)) {
                             self.nfRegistryApi.getPolicyActionResource(action, resource).subscribe(function (policy) {
-                                if (policy.status && policy.status === 409) {
+                                if (policy.status && policy.status === 404) {
                                     // resource does NOT exist
                                 } else {
                                     // resource exists, let's filter out the current group and update it
@@ -397,7 +395,7 @@ NfRegistryManageGroup.prototype = {
                                         policy.resource, policy.users, policy.userGroups).subscribe(
                                         function (response) {
                                             // can manage proxy privileges updated!!!...now update the view
-                                            self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function(response) {
+                                            self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier).subscribe(function (response) {
                                                 self.nfRegistryService.group = response;
                                             });
                                         });
@@ -407,7 +405,6 @@ NfRegistryManageGroup.prototype = {
                     });
                 }
             }
-
         }
     },
 
@@ -418,7 +415,8 @@ NfRegistryManageGroup.prototype = {
         var self = this;
         this.dialog.open(NfRegistryAddUsersToGroup, {
             data: {
-                group: this.nfRegistryService.group
+                group: this.nfRegistryService.group,
+                disableClose: true
             }
         }).afterClosed().subscribe(function () {
             self.nfRegistryApi.getUserGroup(self.nfRegistryService.group.identifier)
@@ -510,7 +508,7 @@ NfRegistryManageGroup.prototype = {
                 });
             var snackBarRef = self.snackBarService.openCoaster({
                 title: 'Success',
-                message: 'The user has been removed from the ' + this.nfRegistryService.group.identity + ' group.',
+                message: 'The user has been removed from the ' + self.nfRegistryService.group.identity + ' group.',
                 verticalPosition: 'bottom',
                 horizontalPosition: 'right',
                 icon: 'fa fa-check-circle-o',
@@ -544,7 +542,7 @@ NfRegistryManageGroup.prototype = {
                     color: '#1EB475',
                     duration: 3000
                 });
-            } else if (response.status === 409) {
+            } else if (response.status === 404) {
                 self._groupname = self.nfRegistryService.group.identity;
                 self.dialogService.openConfirm({
                     title: 'Error',


Mime
View raw message