summaryrefslogtreecommitdiffstats
path: root/modules-available/webinterface
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/webinterface')
-rw-r--r--modules-available/webinterface/config.json4
-rw-r--r--modules-available/webinterface/lang/de/permissions.json7
-rw-r--r--modules-available/webinterface/lang/en/permissions.json7
-rw-r--r--modules-available/webinterface/page.inc.php22
-rw-r--r--modules-available/webinterface/permissions/permissions.json19
-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
10 files changed, 131 insertions, 91 deletions
diff --git a/modules-available/webinterface/config.json b/modules-available/webinterface/config.json
index 7205d70a..36268c6a 100644
--- a/modules-available/webinterface/config.json
+++ b/modules-available/webinterface/config.json
@@ -1,3 +1,3 @@
{
- "category":"main.settings-server"
-}
+ "category": "main.settings-server"
+} \ No newline at end of file
diff --git a/modules-available/webinterface/lang/de/permissions.json b/modules-available/webinterface/lang/de/permissions.json
index ee96810a..213ebd8f 100644
--- a/modules-available/webinterface/lang/de/permissions.json
+++ b/modules-available/webinterface/lang/de/permissions.json
@@ -1,5 +1,6 @@
{
- "edit.https": "HTTPS Einstellungen bearbeiten.",
- "edit.password": "Ă„ndern, ob Passwortfelder in der Web-Schnittstelle maskiert werden sollen.",
- "edit.design": "Seitentitel und Hintergrundfarbe des Logos bearbeiten."
+ "access-page": "Seite sehen.",
+ "edit.design": "Seitentitel und Hintergrundfarbe des Logos bearbeiten.",
+ "edit.https": "HTTPS Einstellungen bearbeiten.",
+ "edit.password": "\u00c4ndern, ob Passwortfelder in der Web-Schnittstelle maskiert werden sollen."
} \ No newline at end of file
diff --git a/modules-available/webinterface/lang/en/permissions.json b/modules-available/webinterface/lang/en/permissions.json
index caf6d0cb..8ebb2830 100644
--- a/modules-available/webinterface/lang/en/permissions.json
+++ b/modules-available/webinterface/lang/en/permissions.json
@@ -1,5 +1,6 @@
{
- "edit.https": "Edit HTTPS settings.",
- "edit.password": "Change whether password fields should be masked or not.",
- "edit.design": "Edit page title and logo background color."
+ "access-page": "View page.",
+ "edit.design": "Edit page title and logo background color.",
+ "edit.https": "Edit HTTPS settings.",
+ "edit.password": "Change whether password fields should be masked or not."
} \ No newline at end of file
diff --git a/modules-available/webinterface/page.inc.php b/modules-available/webinterface/page.inc.php
index 41636c19..ca52c2ab 100644
--- a/modules-available/webinterface/page.inc.php
+++ b/modules-available/webinterface/page.inc.php
@@ -16,15 +16,22 @@ 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;
}
+ if (Request::isPost()) {
+ Util::redirect('?do=webinterface');
+ }
+ User::assertPermission('access-page');
}
private function actionConfigureHttps()
@@ -123,7 +130,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 +140,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 +160,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/permissions/permissions.json b/modules-available/webinterface/permissions/permissions.json
index 45b5395d..ed81602a 100644
--- a/modules-available/webinterface/permissions/permissions.json
+++ b/modules-available/webinterface/permissions/permissions.json
@@ -1,5 +1,14 @@
-[
- "edit.https",
- "edit.password",
- "edit.design"
-] \ No newline at end of file
+{
+ "access-page": {
+ "location-aware": false
+ },
+ "edit.design": {
+ "location-aware": false
+ },
+ "edit.https": {
+ "location-aware": false
+ },
+ "edit.password": {
+ "location-aware": false
+ }
+} \ No newline at end of file
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>