Explorar el Código

Remove add item buttons when there are no permissions

Jamie Curnow hace 7 años
padre
commit
74d2238010

+ 2 - 0
src/frontend/js/app/nginx/dead/main.ejs

@@ -3,7 +3,9 @@
     <div class="card-header">
         <h3 class="card-title">404 Hosts</h3>
         <div class="card-options">
+            <% if (showAddButton) { %>
             <a href="#" class="btn btn-outline-danger btn-sm ml-2 add-item">Add 404 Host</a>
+            <% } %>
         </div>
     </div>
     <div class="card-body no-padding min-100">

+ 9 - 2
src/frontend/js/app/nginx/dead/main.js

@@ -3,6 +3,7 @@
 const Mn            = require('backbone.marionette');
 const DeadHostModel = require('../../../models/dead-host');
 const Api           = require('../../api');
+const Cache         = require('../../cache');
 const Controller    = require('../../controller');
 const ListView      = require('./list/main');
 const ErrorView     = require('../../error/main');
@@ -30,6 +31,10 @@ module.exports = Mn.View.extend({
         }
     },
 
+    templateContext: {
+        showAddButton: Cache.User.canManage('dead_hosts')
+    },
+
     onRender: function () {
         let view = this;
 
@@ -41,10 +46,12 @@ module.exports = Mn.View.extend({
                             collection: new DeadHostModel.Collection(response)
                         }));
                     } else {
+                        let manage = Cache.User.canManage('dead_hosts');
+
                         view.showChildView('list_region', new EmptyView({
                             title:     'There are no 404 Hosts',
-                            subtitle:  'Why don\'t you create one?',
-                            link:      'Add 404 Host',
+                            subtitle:  manage ? 'Why don\'t you create one?' : 'And you don\'t have permission to create one.',
+                            link:      manage ? 'Add 404 Host' : null,
                             btn_color: 'danger',
                             action:    function () {
                                 Controller.showNginxDeadForm();

+ 2 - 0
src/frontend/js/app/nginx/proxy/main.ejs

@@ -3,7 +3,9 @@
     <div class="card-header">
         <h3 class="card-title">Proxy Hosts</h3>
         <div class="card-options">
+            <% if (showAddButton) { %>
             <a href="#" class="btn btn-outline-success btn-sm ml-2 add-item">Add Proxy Host</a>
+            <% } %>
         </div>
     </div>
     <div class="card-body no-padding min-100">

+ 13 - 5
src/frontend/js/app/nginx/proxy/main.js

@@ -3,6 +3,7 @@
 const Mn             = require('backbone.marionette');
 const ProxyHostModel = require('../../../models/proxy-host');
 const Api            = require('../../api');
+const Cache          = require('../../cache');
 const Controller     = require('../../controller');
 const ListView       = require('./list/main');
 const ErrorView      = require('../../error/main');
@@ -30,6 +31,10 @@ module.exports = Mn.View.extend({
         }
     },
 
+    templateContext: {
+        showAddButton: Cache.User.canManage('proxy_hosts')
+    },
+
     onRender: function () {
         let view = this;
 
@@ -41,12 +46,15 @@ module.exports = Mn.View.extend({
                             collection: new ProxyHostModel.Collection(response)
                         }));
                     } else {
+                        let manage = Cache.User.canManage('proxy_hosts');
+
                         view.showChildView('list_region', new EmptyView({
-                            title:     'There are no Proxy Hosts',
-                            subtitle:  'Why don\'t you create one?',
-                            link:      'Add Proxy Host',
-                            btn_color: 'success',
-                            action:    function () {
+                            title:      'There are no Proxy Hosts',
+                            subtitle:   manage ? 'Why don\'t you create one?' : 'And you don\'t have permission to create one.',
+                            link:       manage ? 'Add Proxy Host' : null,
+                            btn_color:  'success',
+                            permission: 'proxy_hosts',
+                            action:     function () {
                                 Controller.showNginxProxyForm();
                             }
                         }));

+ 2 - 0
src/frontend/js/app/nginx/redirection/main.ejs

@@ -3,7 +3,9 @@
     <div class="card-header">
         <h3 class="card-title">Redirection Hosts</h3>
         <div class="card-options">
+            <% if (showAddButton) { %>
             <a href="#" class="btn btn-outline-yellow btn-sm ml-2 add-item">Add Redirection Host</a>
+            <% } %>
         </div>
     </div>
     <div class="card-body no-padding min-100">

+ 9 - 2
src/frontend/js/app/nginx/redirection/main.js

@@ -3,6 +3,7 @@
 const Mn                   = require('backbone.marionette');
 const RedirectionHostModel = require('../../../models/redirection-host');
 const Api                  = require('../../api');
+const Cache                = require('../../cache');
 const Controller           = require('../../controller');
 const ListView             = require('./list/main');
 const ErrorView            = require('../../error/main');
@@ -30,6 +31,10 @@ module.exports = Mn.View.extend({
         }
     },
 
+    templateContext: {
+        showAddButton: Cache.User.canManage('redirection_hosts')
+    },
+
     onRender: function () {
         let view = this;
 
@@ -41,10 +46,12 @@ module.exports = Mn.View.extend({
                             collection: new RedirectionHostModel.Collection(response)
                         }));
                     } else {
+                        let manage = Cache.User.canManage('redirection_hosts');
+
                         view.showChildView('list_region', new EmptyView({
                             title:     'There are no Redirection Hosts',
-                            subtitle:  'Why don\'t you create one?',
-                            link:      'Add Redirection Host',
+                            subtitle:  manage ? 'Why don\'t you create one?' : 'And you don\'t have permission to create one.',
+                            link:      manage ? 'Add Redirection Host' : null,
                             btn_color: 'yellow',
                             action:    function () {
                                 Controller.showNginxRedirectionForm();

+ 2 - 0
src/frontend/js/app/nginx/stream/main.ejs

@@ -3,7 +3,9 @@
     <div class="card-header">
         <h3 class="card-title">Streams</h3>
         <div class="card-options">
+            <% if (showAddButton) { %>
             <a href="#" class="btn btn-outline-blue btn-sm ml-2 add-item">Add Stream</a>
+            <% } %>
         </div>
     </div>
     <div class="card-body no-padding min-100">

+ 9 - 2
src/frontend/js/app/nginx/stream/main.js

@@ -3,6 +3,7 @@
 const Mn          = require('backbone.marionette');
 const StreamModel = require('../../../models/stream');
 const Api         = require('../../api');
+const Cache       = require('../../cache');
 const Controller  = require('../../controller');
 const ListView    = require('./list/main');
 const ErrorView   = require('../../error/main');
@@ -30,6 +31,10 @@ module.exports = Mn.View.extend({
         }
     },
 
+    templateContext: {
+        showAddButton: Cache.User.canManage('streams')
+    },
+
     onRender: function () {
         let view = this;
 
@@ -41,10 +46,12 @@ module.exports = Mn.View.extend({
                             collection: new StreamModel.Collection(response)
                         }));
                     } else {
+                        let manage = Cache.User.canManage('streams');
+
                         view.showChildView('list_region', new EmptyView({
                             title:     'There are no Streams',
-                            subtitle:  'Why don\'t you create one?',
-                            link:      'Add Stream',
+                            subtitle:  manage ? 'Why don\'t you create one?' : 'And you don\'t have permission to create one.',
+                            link:      manage ? 'Add Stream' : null,
                             btn_color: 'blue',
                             action:    function () {
                                 Controller.showNginxStreamForm();