summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2018-02-16 14:45:16 +0100
committerSimon Rettberg2018-02-16 14:45:16 +0100
commitbe2712827e4bec519a5704551832acb419f9ec3b (patch)
treed20e2c785e24d52c6ac723bcba40f1e02c78e9a2
parent[vmstore] Simplify permissions (diff)
downloadslx-admin-be2712827e4bec519a5704551832acb419f9ec3b.tar.gz
slx-admin-be2712827e4bec519a5704551832acb419f9ec3b.tar.xz
slx-admin-be2712827e4bec519a5704551832acb419f9ec3b.zip
[webinterface] Use permission helpers; disable inputs individually
-rw-r--r--modules-available/webinterface/page.inc.php18
-rw-r--r--modules-available/webinterface/style.css7
-rw-r--r--modules-available/webinterface/templates/customization.html11
-rw-r--r--modules-available/webinterface/templates/heading.html20
-rw-r--r--modules-available/webinterface/templates/https.html102
-rw-r--r--modules-available/webinterface/templates/passwords.html23
6 files changed, 103 insertions, 78 deletions
diff --git a/modules-available/webinterface/page.inc.php b/modules-available/webinterface/page.inc.php
index 41636c19..806ffd59 100644
--- a/modules-available/webinterface/page.inc.php
+++ b/modules-available/webinterface/page.inc.php
@@ -16,13 +16,16 @@ class Page_WebInterface extends Page
}
switch (Request::post('action')) {
case 'https':
- if (User::hasPermission("edit.https")) $this->actionConfigureHttps();
+ User::assertPermission("edit.https");
+ $this->actionConfigureHttps();
break;
case 'password':
- if (User::hasPermission("edit.password")) $this->actionShowHidePassword();
+ User::assertPermission("edit.password");
+ $this->actionShowHidePassword();
break;
case 'customization':
- if (User::hasPermission("edit.design")) $this->actionCustomization();
+ User::assertPermission("edit.design");
+ $this->actionCustomization();
break;
}
}
@@ -123,7 +126,7 @@ class Page_WebInterface extends Page
}
}
$data[$type . 'Selected'] = true;
- $data["editAllowed"] = User::hasPermission("edit.https");
+ Permission::addGlobalTags($data['perms'], null, ['edit.https']);
Render::addTemplate('https', $data);
//
// Password fields
@@ -133,8 +136,11 @@ class Page_WebInterface extends Page
$data['selected_show'] = 'checked';
else
$data['selected_hide'] = 'checked';
- $data["editAllowed"] = User::hasPermission("edit.password");
+ Permission::addGlobalTags($data['perms'], null, ['edit.password']);
Render::addTemplate('passwords', $data);
+ //
+ // Colors/Prefix
+ //
$data = array('prefix' => Property::get('page-title-prefix'));
$data['colors'] = array_map(function ($i) { return array('color' => $i ? '#' . $i : '', 'text' => Render::readableColor($i)); },
array('', 'f00', '0f0', '00f', 'ff0', 'f0f', '0ff', 'fff', '000', 'f90', '09f', '90f', 'f09', '9f0'));
@@ -150,7 +156,7 @@ class Page_WebInterface extends Page
if ($color) {
$data['colors'][] = array('color' => $color, 'selected' => 'selected');
}
- $data["editAllowed"] = User::hasPermission("edit.design");
+ Permission::addGlobalTags($data['perms'], null, ['edit.design']);
Render::addTemplate('customization', $data);
}
diff --git a/modules-available/webinterface/style.css b/modules-available/webinterface/style.css
deleted file mode 100644
index 7b86af56..00000000
--- a/modules-available/webinterface/style.css
+++ /dev/null
@@ -1,7 +0,0 @@
-.disabledPanel {
- cursor: not-allowed;
-}
-.disabledPanel > .panel-body {
- pointer-events: none;
- opacity: 0.8;
-}
diff --git a/modules-available/webinterface/templates/customization.html b/modules-available/webinterface/templates/customization.html
index ad57eea7..ea59d562 100644
--- a/modules-available/webinterface/templates/customization.html
+++ b/modules-available/webinterface/templates/customization.html
@@ -1,21 +1,21 @@
<form action="?do=WebInterface" method="post">
<input type="hidden" name="token" value="{{token}}">
<input type="hidden" name="action" value="customization">
- <div class="panel panel-default {{^editAllowed}}disabledPanel{{/editAllowed}}">
+ <div class="panel panel-default">
<div class="panel-heading">{{lang_customization}}</div>
<div class="panel-body">
<p>{{lang_customizationDesc}}</p>
<div>
<label>
{{lang_pageTitlePrefix}}
- <input type="text" class="form-control" name="prefix" value="{{prefix}}">
+ <input type="text" class="form-control" name="prefix" value="{{prefix}}" {{perms.edit.design.disabled}}>
</label>
</div>
<div>
<label>
{{lang_logoBackground}}
- <select class="form-control" name="bgcolor">
+ <select class="form-control" name="bgcolor" {{perms.edit.design.disabled}}>
{{#colors}}
<option style="color:{{text}};background:{{color}}" {{selected}}>{{color}}</option>
{{/colors}}
@@ -23,7 +23,10 @@
</label>
</div>
<div class="pull-right">
- <button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-floppy-disk"></span> {{lang_save}}</button>
+ <button type="submit" class="btn btn-primary" {{perms.edit.design.disabled}}>
+ <span class="glyphicon glyphicon-floppy-disk"></span>
+ {{lang_save}}
+ </button>
</div>
</div>
</div>
diff --git a/modules-available/webinterface/templates/heading.html b/modules-available/webinterface/templates/heading.html
index d68360f1..59a8cf6b 100644
--- a/modules-available/webinterface/templates/heading.html
+++ b/modules-available/webinterface/templates/heading.html
@@ -1 +1,19 @@
-<h1>{{lang_moduleHeading}}</h1> \ No newline at end of file
+<div class="page-header">
+ <h1>{{lang_moduleHeading}}</h1>
+</div>
+<script><!--
+document.addEventListener('DOMContentLoaded', function () {
+ var $boxCustom = $('#wcustom');
+ $('.row-select').click(function (e) {
+ if (e.target.tagName === 'INPUT')
+ return;
+ $(e.target).closest('.row-select').find('input').click();
+ });
+ $('#cert-options').find('input').change(function(e) {
+ $boxCustom.toggle(e.target.id === 'mcustom');
+ });
+ if ($('#mcustom').is(':checked')) {
+ $boxCustom.show();
+ }
+});
+//--></script> \ No newline at end of file
diff --git a/modules-available/webinterface/templates/https.html b/modules-available/webinterface/templates/https.html
index a212cce3..ad36e9e5 100644
--- a/modules-available/webinterface/templates/https.html
+++ b/modules-available/webinterface/templates/https.html
@@ -1,7 +1,7 @@
<form action="?do=WebInterface" method="post">
<input type="hidden" name="token" value="{{token}}">
<input type="hidden" name="action" value="https">
- <div class="panel panel-default {{^editAllowed}}disabledPanel{{/editAllowed}}">
+ <div class="panel panel-default">
<div class="panel-heading">{{lang_httpsSettings}}</div>
<div class="panel-body">
<p>{{lang_httpsDescription}}</p>
@@ -25,46 +25,45 @@
<p>{{lang_suppliedSelected}}</p>
{{/suppliedSelected}}
</div>
- {{#httpsEnabled}}
- <div class="input-group" onclick="$('#moff').prop('checked', true);
- $('#wcustom').hide()">
- <span class="input-group-addon">
- <div class="radio">
- <input id="moff" type="radio" name="mode" value="off">
- <label></label>
- </div>
- </span>
- <span class="form-control">
- {{lang_noHttps}}
- </span>
- </div>
- {{/httpsEnabled}}
- <div class="input-group" onclick="$('#mrandom').prop('checked', true);
- $('#wcustom').hide()">
- <span class="input-group-addon">
- <div class="radio">
- <input id="mrandom" type="radio" name="mode" value="random">
- <label></label>
- </div>
- </span>
- <span class="form-control">
- {{lang_randomCert}}
- </span>
- </div>
- <div class="input-group" onclick="$('#mcustom').prop('checked', true);
- $('#wcustom').show()">
- <span class="input-group-addon">
- <div class="radio">
- <input id="mcustom" type="radio" name="mode" value="custom">
- <label></label>
- </div>
- </span>
- <span class="form-control">
- {{lang_customCert}}
- </span>
+ <div id="cert-options">
+ {{#httpsEnabled}}
+ <div class="input-group row-select">
+ <span class="input-group-addon">
+ <span class="radio">
+ <input id="moff" type="radio" name="mode" value="off" {{perms.edit.https.disabled}}>
+ <label></label>
+ </span>
+ </span>
+ <span class="form-control">
+ {{lang_noHttps}}
+ </span>
+ </div>
+ {{/httpsEnabled}}
+ <div class="input-group row-select">
+ <span class="input-group-addon">
+ <span class="radio">
+ <input id="mrandom" type="radio" name="mode" value="random" {{perms.edit.https.disabled}}>
+ <label></label>
+ </span>
+ </span>
+ <span class="form-control">
+ {{lang_randomCert}}
+ </span>
+ </div>
+ <div class="input-group row-select">
+ <span class="input-group-addon">
+ <span class="radio">
+ <input id="mcustom" type="radio" name="mode" value="custom" {{perms.edit.https.disabled}}>
+ <label></label>
+ </span>
+ </span>
+ <span class="form-control">
+ {{lang_customCert}}
+ </span>
+ </div>
</div>
- <div class="well well-sm" style="display:none" id="wcustom">
+ <div class="well well-sm collapse" id="wcustom">
{{lang_certificate}}
<pre class="small">
-----BEGIN CERTIFICATE-----
@@ -87,32 +86,35 @@ MIIFfTCCA...
</div>
<br>
- <div class="input-group">
+ <div class="input-group row-select">
<span class="input-group-addon">
- <div class="checkbox">
- <input id="httpsredirect" type="checkbox" name="httpsredirect" value="on" {{redirect_checked}}>
+ <span class="checkbox">
+ <input id="httpsredirect" type="checkbox" name="httpsredirect" value="on" {{redirect_checked}} {{perms.edit.https.disabled}}>
<label></label>
- </div>
+ </span>
</span>
- <span class="form-control" onclick="$('#httpsredirect').prop('checked', !$('#httpsredirect').prop('checked'))">
+ <span class="form-control">
{{lang_httpsRedirect}}
</span>
</div>
- <div class="input-group">
+ <div class="input-group row-select">
<span class="input-group-addon">
- <div class="checkbox">
- <input id="usehsts" type="checkbox" name="usehsts" value="on" {{hsts_checked}}>
+ <span class="checkbox">
+ <input id="usehsts" type="checkbox" name="usehsts" value="on" {{hsts_checked}} {{perms.edit.https.disabled}}>
<label></label>
- </div>
+ </span>
</span>
- <span class="form-control" onclick="$('#usehsts').prop('checked', !$('#usehsts').prop('checked'))">
+ <span class="form-control">
{{lang_useHsts}}
</span>
</div>
<br>
<div class="pull-right">
- <button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-floppy-disk"></span> {{lang_save}}</button>
+ <button type="submit" class="btn btn-primary" {{perms.edit.https.disabled}}>
+ <span class="glyphicon glyphicon-floppy-disk"></span>
+ {{lang_save}}
+ </button>
</div>
</div>
</div>
diff --git a/modules-available/webinterface/templates/passwords.html b/modules-available/webinterface/templates/passwords.html
index 1d73c172..b61c8ce9 100644
--- a/modules-available/webinterface/templates/passwords.html
+++ b/modules-available/webinterface/templates/passwords.html
@@ -1,27 +1,27 @@
<form action="?do=WebInterface" method="post">
<input type="hidden" name="token" value="{{token}}">
<input type="hidden" name="action" value="password">
- <div class="panel panel-default {{^editAllowed}}disabledPanel{{/editAllowed}}">
+ <div class="panel panel-default">
<div class="panel-heading">{{lang_passwordFields}}</div>
<div class="panel-body">
<p>{{lang_passwordsDescription}}</p>
- <div class="input-group" onclick="$('#pmshow').prop('checked', true)">
+ <div class="input-group row-select">
<span class="input-group-addon">
- <div class="radio">
- <input id="pmshow" type="radio" name="mode" value="show" {{selected_show}}>
+ <span class="radio">
+ <input id="pmshow" type="radio" name="mode" value="show" {{selected_show}} {{perms.edit.password.disabled}}>
<label></label>
- </div>
+ </span>
</span>
<span class="form-control">
{{lang_showPasswords}}
</span>
</div>
- <div class="input-group" onclick="$('#pmhide').prop('checked', true)">
+ <div class="input-group row-select">
<span class="input-group-addon">
- <div class="radio">
- <input id="pmhide" type="radio" name="mode" value="hide" {{selected_hide}}>
+ <span class="radio">
+ <input id="pmhide" type="radio" name="mode" value="hide" {{selected_hide}} {{perms.edit.password.disabled}}>
<label></label>
- </div>
+ </span>
</span>
<span class="form-control">
{{lang_hidePasswords}}
@@ -29,7 +29,10 @@
</div>
<br>
<div class="pull-right">
- <button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-floppy-disk"></span> {{lang_save}}</button>
+ <button type="submit" class="btn btn-primary" {{perms.edit.password.disabled}}>
+ <span class="glyphicon glyphicon-floppy-disk"></span>
+ {{lang_save}}
+ </button>
</div>
</div>
</div>