summaryrefslogtreecommitdiffstats
path: root/modules-available/vmstore
diff options
context:
space:
mode:
authorUdo Walter2017-12-28 15:57:15 +0100
committerUdo Walter2017-12-28 15:57:15 +0100
commit5490ff0691472f08ae56fa46c36cb293771dc25f (patch)
tree43c55dcd4c7b5387f31b9c1672a3e5c15a13df47 /modules-available/vmstore
parent[serversetup-bwlp] added permissions to edit boot address and menu and (diff)
downloadslx-admin-5490ff0691472f08ae56fa46c36cb293771dc25f.tar.gz
slx-admin-5490ff0691472f08ae56fa46c36cb293771dc25f.tar.xz
slx-admin-5490ff0691472f08ae56fa46c36cb293771dc25f.zip
[vmstore] added permissions to choose internal, nfs or cifs vm storage
Diffstat (limited to 'modules-available/vmstore')
-rw-r--r--modules-available/vmstore/lang/de/permissions.json5
-rw-r--r--modules-available/vmstore/lang/de/template-tags.json3
-rw-r--r--modules-available/vmstore/lang/en/permissions.json5
-rw-r--r--modules-available/vmstore/lang/en/template-tags.json3
-rw-r--r--modules-available/vmstore/page.inc.php12
-rw-r--r--modules-available/vmstore/permissions/permissions.json5
-rw-r--r--modules-available/vmstore/style.css12
-rw-r--r--modules-available/vmstore/templates/page-vmstore.html12
8 files changed, 48 insertions, 9 deletions
diff --git a/modules-available/vmstore/lang/de/permissions.json b/modules-available/vmstore/lang/de/permissions.json
new file mode 100644
index 00000000..f3148ea8
--- /dev/null
+++ b/modules-available/vmstore/lang/de/permissions.json
@@ -0,0 +1,5 @@
+{
+ "choose.internal": "Internen Speicher auswählen.",
+ "choose.nfs": "Einen NFS Netzwerkspeicher auswählen.",
+ "choose.cifs": "Einen CIFS Netzwerkspeicher auswählen."
+} \ No newline at end of file
diff --git a/modules-available/vmstore/lang/de/template-tags.json b/modules-available/vmstore/lang/de/template-tags.json
index 16414809..d434566a 100644
--- a/modules-available/vmstore/lang/de/template-tags.json
+++ b/modules-available/vmstore/lang/de/template-tags.json
@@ -3,13 +3,14 @@
"lang_cifsHelp2": "Geben Sie f\u00fcr den Satellitenserver einen User mit Lese- und\r\nSchreibberechtigungen an. F\u00fcr die Clients sollte ein User angegeben\r\nwerden, der nur Leseberechtigungen auf dem Share besitzt. Am einfachsten\r\nerreichen Sie dies, indem Sie passwortlosen Gastzugriff mit Leserechten\r\nauf die Freigabe erlauben.",
"lang_cifsHelp3": "Wenn exklusiv DNBD3 verwendet wird, k\u00f6nnen Sie den passwortlosen\r\nGastzugriff deaktivieren und die Zeile \"Nur-Lese-Zugangsdaten\" leer\r\nlassen. Dies erh\u00f6ht die Sicherheit.",
"lang_configure": "Konfigurieren",
- "lang_intern": "Intern",
+ "lang_internal": "Intern",
"lang_nfsHelp1": "Ben\u00f6tigt wird ein NFSv4\/3-Share, der f\u00fcr den Satelliten-Server schreibbar, und f\u00fcr die Arbeitsstationen lesbar ist. Beispielkonfiguration auf dem NFS-Server, wenn der Satelliten-Server die Adresse 1.2.3.4 hat:",
"lang_nfsHelp2": "Alternative Konfiguration mittels all_squash. In diesem Fall muss das Verzeichnis auf dem Server dem Benutzer mit der uid 1234 geh\u00f6ren:",
"lang_nfsHelp3": "Die erste Zeile erlaubt den Lese- und Schreibzugriff des\r\nSatellitenservers. Die zweite Zeile erteilt allen anderen Rechnern\r\nausschlie\u00dflich Lesezugriff. Sie k\u00f6nnen dies nat\u00fcrlich auch auf\r\nspezielle Subnetze oder IP-Bereiche beschr\u00e4nken.",
"lang_nfsHelp4": "Wenn exklusiv DNBD3 verwendet wird, kann die zweite Zeile ausgelassen\r\nwerden. Dies erh\u00f6ht die Sicherheit.",
"lang_noAdditionalInformation": "Keine weitere Konfiguration notwendig",
"lang_password": "Passwort",
+ "lang_path": "Pfad",
"lang_readOnly": "Nur-Lese-Zugangsdaten",
"lang_readWrite": "Lese\/Schreib-Zugangsdaten",
"lang_username": "Benutzerkennung",
diff --git a/modules-available/vmstore/lang/en/permissions.json b/modules-available/vmstore/lang/en/permissions.json
new file mode 100644
index 00000000..00708f7d
--- /dev/null
+++ b/modules-available/vmstore/lang/en/permissions.json
@@ -0,0 +1,5 @@
+{
+ "choose.internal": "Choose internal storage.",
+ "choose.nfs": "Choose a NFS network storage.",
+ "choose.cifs": "Choose a CIFS network storage."
+} \ No newline at end of file
diff --git a/modules-available/vmstore/lang/en/template-tags.json b/modules-available/vmstore/lang/en/template-tags.json
index 1072f10e..d78877b9 100644
--- a/modules-available/vmstore/lang/en/template-tags.json
+++ b/modules-available/vmstore/lang/en/template-tags.json
@@ -3,13 +3,14 @@
"lang_cifsHelp2": "Please provide user credentials with read\/write permissions which will be used by the server. For the clients, user credentials that allow read-only access is required. You could also enable passwordless guest login for read-only access.",
"lang_cifsHelp3": "If you want to use DNBD3 in exclusive mode, you can leave the read only credentials empty, to prevent people from browsing the share.",
"lang_configure": "Configure",
- "lang_intern": "Intern",
+ "lang_internal": "Internal",
"lang_nfsHelp1": "An NFSv4\/3-Share is required. It should be readable by all the workstations, and writable for the satellite server. An example, assuming the satellite server has IP address 1.2.3.4:",
"lang_nfsHelp2": "Alternate configuration using all_squash. The exported directory should be owned (and be writable) by the user with uid 1234.",
"lang_nfsHelp3": "The first line allows read\/write access for the satellite server. The second line grants read-only access for every other IP address. You could limit the second line to specific IP ranges only if desired.",
"lang_nfsHelp4": "If using DNBD3 in exclusive mode, you can remove the second line completely, so only the satellite server has access to the NFS store.",
"lang_noAdditionalInformation": "No additional cofiguration required",
"lang_password": "Password",
+ "lang_path": "Path",
"lang_readOnly": "Read-only Access",
"lang_readWrite": "Read\/Write Access",
"lang_username": "Username",
diff --git a/modules-available/vmstore/page.inc.php b/modules-available/vmstore/page.inc.php
index 3314bfe2..c3d5da77 100644
--- a/modules-available/vmstore/page.inc.php
+++ b/modules-available/vmstore/page.inc.php
@@ -8,7 +8,7 @@ class Page_VmStore extends Page
{
User::load();
- if (!User::hasPermission('superadmin')) {
+ if (!User::isLoggedIn()) {
Message::addError('main.no-permission');
Util::redirect('?do=Main');
}
@@ -33,6 +33,10 @@ class Page_VmStore extends Page
if (isset($vmstore['storetype'])) {
$vmstore['pre-' . $vmstore['storetype']] = 'checked';
}
+ $vmstore['internalAllowed'] = User::hasPermission("choose.internal");
+ $vmstore['nfsAllowed'] = User::hasPermission("choose.nfs");
+ $vmstore['cifsAllowed'] = User::hasPermission("choose.cifs");
+ $vmstore['saveAllowed'] = $vmstore['internalAllowed'] || $vmstore['nfsAllowed'] || $vmstore['cifsAllowed'];
Render::addTemplate('page-vmstore', $vmstore);
}
@@ -47,6 +51,12 @@ class Page_VmStore extends Page
Message::addError('main.value-invalid', 'type', $storetype);
Util::redirect('?do=VmStore');
}
+ if (($storetype === 'internal' && !User::hasPermission("choose.internal")) ||
+ ($storetype === 'nfs' && !User::hasPermission("choose.nfs")) ||
+ ($storetype === 'cifs' && !User::hasPermission("choose.cifs"))) {
+ Message::addError('main.no-permission');
+ Util::redirect('?do=VmStore');
+ }
// Validate syntax of nfs/cifs
if ($storetype === 'nfs' && !preg_match('#^\S+:\S+$#is', $vmstore['nfsaddr'])) {
Message::addError('main.value-invalid', 'nfsaddr', $vmstore['nfsaddr']);
diff --git a/modules-available/vmstore/permissions/permissions.json b/modules-available/vmstore/permissions/permissions.json
new file mode 100644
index 00000000..f2c22c72
--- /dev/null
+++ b/modules-available/vmstore/permissions/permissions.json
@@ -0,0 +1,5 @@
+[
+ "choose.internal",
+ "choose.nfs",
+ "choose.cifs"
+] \ No newline at end of file
diff --git a/modules-available/vmstore/style.css b/modules-available/vmstore/style.css
new file mode 100644
index 00000000..cc38e8ed
--- /dev/null
+++ b/modules-available/vmstore/style.css
@@ -0,0 +1,12 @@
+.disabledPanel {
+ cursor: not-allowed;
+}
+
+.disabledPanel > .panel-heading, .disabledPanel > .panel-body {
+ pointer-events: none;
+ opacity: 0.8;
+}
+
+.disabledPanel > .panel-heading > .btn {
+ pointer-events: initial;
+} \ No newline at end of file
diff --git a/modules-available/vmstore/templates/page-vmstore.html b/modules-available/vmstore/templates/page-vmstore.html
index 6156597b..fece8e24 100644
--- a/modules-available/vmstore/templates/page-vmstore.html
+++ b/modules-available/vmstore/templates/page-vmstore.html
@@ -9,11 +9,11 @@
<p>{{lang_vmLocationChoose}} <a class="btn btn-default" data-toggle="modal" data-target="#help-store"><span class="glyphicon glyphicon-question-sign"></span></a></p>
- <div class="panel panel-default">
+ <div class="panel panel-default {{^internalAllowed}}disabledPanel{{/internalAllowed}}">
<div class="panel-heading">
<div class="radio">
<input type="radio" name="storetype" value="internal" {{pre-internal}} id="id-internal">
- <label for="id-internal">{{lang_intern}}</label>
+ <label for="id-internal">{{lang_internal}}</label>
</div>
</div>
<div class="panel-body">
@@ -21,7 +21,7 @@
</div>
</div>
- <div class="panel panel-default">
+ <div class="panel panel-default {{^nfsAllowed}}disabledPanel{{/nfsAllowed}}">
<div class="panel-heading">
<div class="radio radio-inline">
<input type="radio" name="storetype" value="nfs" {{pre-nfs}} id="id-nfs">
@@ -37,7 +37,7 @@
- <div class="panel panel-default">
+ <div class="panel panel-default {{^cifsAllowed}}disabledPanel{{/cifsAllowed}}">
<div class="panel-heading">
<div class="radio radio-inline">
<input type="radio" name="storetype" value="cifs" {{pre-cifs}} id="id-cifs">
@@ -46,7 +46,7 @@
<a class="btn btn-default btn-sm" data-toggle="modal" data-target="#help-cifs"><span class="glyphicon glyphicon-question-sign"></span></a>
</div>
<div class="panel-body">
- <label for="cifsaddr">UNC-Pfad</label>
+ <label for="cifsaddr">UNC-{{lang_path}}</label>
<input type="text" class="form-control" name="cifsaddr" value="{{cifsaddr}}" placeholder="\\samba.server.example.com\bwlp" id="cifsaddr">
<br>
<label for="cifsuser">{{lang_readWrite}}</label>
@@ -75,7 +75,7 @@
</div>
</div>
<div class="text-right">
- <button class="btn btn-primary" type="submit"><span class="glyphicon glyphicon-floppy-disk"></span> {{lang_save}}</button>
+ <button class="btn btn-primary" type="submit" {{^saveAllowed}}disabled{{/saveAllowed}}><span class="glyphicon glyphicon-floppy-disk"></span> {{lang_save}}</button>
</div>
</form>