Allow all users to list service users

Currently only users who can create service user may see the list of
service users while the owner of the users may manage them.

The list shows only owned users so there is no reason why the owners
cannot use the user interface in order to manage the service users.

Change-Id: I03b5137055a416de7ff345a6e34c7653aa25940f
Signed-off-by: Alon Bar-Lev <alon.barlev@gmail.com>
diff --git a/gr-serviceuser/gr-serviceuser-list.js b/gr-serviceuser/gr-serviceuser-list.js
index a3c40c0..a8315bc 100644
--- a/gr-serviceuser/gr-serviceuser-list.js
+++ b/gr-serviceuser/gr-serviceuser-list.js
@@ -34,6 +34,10 @@
    */
   static get properties() {
     return {
+      _canCreate: {
+        type: Boolean,
+        value: false,
+      },
       _serviceUsers: Array,
       _loading: {
         type: Boolean,
@@ -54,9 +58,19 @@
         new CustomEvent(
             'title-change',
             {detail: {title: 'Service Users'}, bubbles: true, composed: true}));
+    this._getPermissions();
     this._getServiceUsers();
   }
 
+  _getPermissions() {
+    return this.plugin.restApi('/accounts/self/capabilities/').get('')
+        .then(capabilities => {
+          this._canCreate = capabilities
+              && (capabilities.administrateServer
+                  || capabilities['serviceuser-createServiceUser']);
+        });
+  }
+
   _getServiceUsers() {
     return this.plugin.restApi('/a/config/server/serviceuser~serviceusers/')
         .get('')
diff --git a/gr-serviceuser/gr-serviceuser-list_html.js b/gr-serviceuser/gr-serviceuser-list_html.js
index a6e19ff..b0a04aa 100644
--- a/gr-serviceuser/gr-serviceuser-list_html.js
+++ b/gr-serviceuser/gr-serviceuser-list_html.js
@@ -38,7 +38,8 @@
     <div id="topContainer">
       <div></div>
       <div id="createNewContainer"
-           class$="[[_computeCreateClass(createNew)]]">
+           class$="[[_computeCreateClass(createNew)]]"
+           hidden$="[[!_canCreate]]">
         <gr-button primary
                    link
                    id="createNew"
diff --git a/gr-serviceuser/gr-serviceuser.js b/gr-serviceuser/gr-serviceuser.js
index 81b7329..6c95d9b 100644
--- a/gr-serviceuser/gr-serviceuser.js
+++ b/gr-serviceuser/gr-serviceuser.js
@@ -25,14 +25,13 @@
         if (capabilities
             && (capabilities.administrateServer
                 || capabilities['serviceuser-createServiceUser'])) {
-          plugin.screen('list', GrServiceUserList.is);
-          plugin.screen('user', GrServiceUserDetail.is);
           plugin.screen('create', GrServiceUserCreate.is);
         }
+        plugin.screen('list', GrServiceUserList.is);
+        plugin.screen('user', GrServiceUserDetail.is);
         plugin.admin()
             .addMenuLink(
                 'Service Users',
-                '/x/serviceuser/list',
-                'serviceuser-createServiceUser');
+                '/x/serviceuser/list');
       });
 });