Module: check_mk
Branch: master
Commit: dff573b2942742c9c8298d41c791e0e9e1b75a94
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=dff573b2942742…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Wed Sep 26 17:41:48 2018 +0200
6724 FIX Add missing permission for viewing host/service availability
A new permission named "See the availability" has been added. It can
be used to hide the availability context buttons and views from users.
Change-Id: I9086935086b0bb4bb016833b9b09a4e93b1c0d54
---
.werks/6724 | 12 ++++++++++++
cmk/gui/default_permissions.py | 5 +++++
cmk/gui/plugins/views/availability.py | 3 +++
cmk/gui/views.py | 2 +-
4 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/.werks/6724 b/.werks/6724
new file mode 100644
index 0000000..d394452
--- /dev/null
+++ b/.werks/6724
@@ -0,0 +1,12 @@
+Title: Add missing permission for viewing host/service availability
+Level: 1
+Component: multisite
+Class: fix
+Compatible: compat
+Edition: cre
+State: unknown
+Version: 1.6.0i1
+Date: 1537976434
+
+A new permission named "See the availability" has been added. It can
+be used to hide the availability context buttons and views from users.
diff --git a/cmk/gui/default_permissions.py b/cmk/gui/default_permissions.py
index 9b68ef9..15d0400 100644
--- a/cmk/gui/default_permissions.py
+++ b/cmk/gui/default_permissions.py
@@ -103,6 +103,11 @@ def load_plugins(force):
[ 'admin', 'user' ]
)
+ config.declare_permission("general.see_availability",
+ _("See the availability"),
+ _("See the availability views of hosts and services"),
+ [ "admin", "user", "guest" ])
+
config.declare_permission('general.edit_notifications',
_('Edit personal notification settings'),
_('This allows a user to edit his personal notification settings. You also
need the permission '
diff --git a/cmk/gui/plugins/views/availability.py
b/cmk/gui/plugins/views/availability.py
index e0ee642..6150a03 100644
--- a/cmk/gui/plugins/views/availability.py
+++ b/cmk/gui/plugins/views/availability.py
@@ -148,6 +148,7 @@ def render_availability_options(what):
# is (currently) called by views.py, when showing a view but
# availability mode is activated.
def render_availability_page(view, datasource, context, filterheaders, only_sites,
limit):
+ config.user.need_permission("general.see_availability")
if handle_edit_annotations():
return
@@ -508,6 +509,8 @@ def render_timeline_bar(timeline_layout, style):
# logic for getting the aggregates. As soon as we have cleaned of the visuals,
# filters, contexts etc we can unify the code!
def render_bi_availability(title, aggr_rows):
+ config.user.need_permission("general.see_availability")
+
av_mode = html.var("av_mode", "availability")
avoptions = get_availability_options_from_url("bi")
if av_mode == "timeline":
diff --git a/cmk/gui/views.py b/cmk/gui/views.py
index 535115a..6067a10 100644
--- a/cmk/gui/views.py
+++ b/cmk/gui/views.py
@@ -1512,7 +1512,7 @@ def show_context_links(thisview, datasource, show_filters,
html.context_button(_("Edit View"), url, "edit",
id="edit", bestof=config.context_buttons_to_show)
if display_options.enabled(display_options.E):
- if show_availability:
+ if show_availability and config.user.may("general.see_availability"):
html.context_button(_("Availability"),
html.makeuri([("mode", "availability")]), "availability")
if show_combined_graphs and config.combined_graphs_available():
html.context_button(_("Combined graphs"),