diff --git a/Vagrantfile b/Vagrantfile index 6d57e6b..919fe87 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -18,9 +18,10 @@ installphp vpn.vm.box = "ubuntu/wily64" vpn.vm.network "private_network", ip: "192.168.50.8" vpn.vm.synced_folder "../zer.ooo-server", "/server" + vpn.vm.synced_folder "../zer.ooo-service", "/service" vpn.vm.network "forwarded_port", guest: 7864, host: 7864 vpn.vm.provision :shell, inline: <'); + var errorDiv = $('
').addClass('error-message'); + + function error(msg) { + $('.title').after(errorDiv.text(msg)); + } $('.save').click(function () { save(function(){}); @@ -17,9 +21,8 @@ $(function () { var data = $('.server-form input,.server-form select').serializeArray(); $.post('/panel/server/' + fingerprint, data, function (data) { - console.log(data); if (!data.success) { - $('h2').after(error.text(data.error)); + error(data.error); return; } @@ -36,7 +39,7 @@ $(function () { }, function (data) { if (!data.success) { - $('h2').after(error.text(data.error)); + error(data.error); return; } diff --git a/src/Handler/Panel/Certificates/Revoke.php b/src/Handler/Panel/Certificates/Revoke.php index 76b1d75..4483185 100644 --- a/src/Handler/Panel/Certificates/Revoke.php +++ b/src/Handler/Panel/Certificates/Revoke.php @@ -40,7 +40,7 @@ class Revoke extends Session /** * @var CA $ca */ - $ca = $this->get('ca'); + $ca = $this->get('ca'); try { $ca->revoke($cert->getCertificate()); diff --git a/src/Handler/Panel/Servers.php b/src/Handler/Panel/Servers.php new file mode 100644 index 0000000..d1b4ea3 --- /dev/null +++ b/src/Handler/Panel/Servers.php @@ -0,0 +1,34 @@ +get('session')->getSegment('main'); + $this->get('twig-vars')->def('message', $segment->getFlash('message')); + + $superuser = $this->getUser()->getSuperuser(); + $vars = [ + 'superuser' => $superuser, + 'servers' => $this->fetchServers() + ]; + + if ($superuser) { + $vars['registered_servers'] = $this->fetchServers('registered'); + } + + return $this->render('panel/servers.html.twig', $vars); + } + + public function fetchServers($status = "signed") + { + return ServerQuery::create()->filterByStatus($status)->find(); + } +} \ No newline at end of file diff --git a/src/Handler/Panel/Servers/Edit/Show.php b/src/Handler/Panel/Servers/Edit/Show.php index 99a07d9..dc321a2 100644 --- a/src/Handler/Panel/Servers/Edit/Show.php +++ b/src/Handler/Panel/Servers/Edit/Show.php @@ -9,10 +9,10 @@ namespace Eater\Glim\Handler\Panel\Servers\Edit; -use Eater\Glim\Handler\Session; +use Eater\Glim\Handler\Panel; use Eater\Glim\Model\ServerQuery; -class Show extends Session +class Show extends Panel { protected $shouldHaveSuperuser = true; diff --git a/src/Handler/Panel/Servers/Remove.php b/src/Handler/Panel/Servers/Remove.php index 1598aa7..6476770 100644 --- a/src/Handler/Panel/Servers/Remove.php +++ b/src/Handler/Panel/Servers/Remove.php @@ -15,10 +15,18 @@ class Remove extends Session public function handle() { $server = ServerQuery::create()->findOneByFingerprint($this->post('fingerprint')); + if ($server === null || $server->getStatus() !== 'registered') { + /** @var \Aura\Session\Session $session */ + $session = $this->get('session'); + $segment = $session->getSegment('main'); + + $segment->setFlash("message", "Couldn't delete server that is already signed"); + + return $this->redirect('/panel/servers'); + } + $server->delete(); - return $this->json([ - 'success' => true - ]); + return $this->redirect('/panel/servers'); } } \ No newline at end of file diff --git a/views/panel/servers.html.twig b/views/panel/servers.html.twig new file mode 100644 index 0000000..f01e2ba --- /dev/null +++ b/views/panel/servers.html.twig @@ -0,0 +1,56 @@ +{% extends "panel.html.twig" %} + +{% block head %} + {{ parent() }} + + + +{% endblock %} + +{% block panel_contents %} +

Servers

+ {% if message %} +
{{ message }}
+ {% endif %} + + {% if superuser %} +

Registered servers

+ + {% endif %} +{% endblock %} \ No newline at end of file diff --git a/views/panel/servers/edit.html.twig b/views/panel/servers/edit.html.twig index cd15b45..3649d52 100644 --- a/views/panel/servers/edit.html.twig +++ b/views/panel/servers/edit.html.twig @@ -1,4 +1,4 @@ -{% extends "base_bootstrap.html.twig" %} +{% extends "panel.html.twig" %} {% block head %} {{ parent() }} @@ -6,91 +6,60 @@ {% endblock %} -{% block content %} -
-
-
-
-

Editing server '{{ server.getFqdn() }}'

-
-
-
- -
- -
-
-
- -
- -
-
-

Details

-
- -
- -
-
-
- -
- -
-
-

Config

-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
-
- - {% if server.getStatus() == 'registered' %} - - {% endif %} -
-
-
-
-
+{% block panel_contents %} +

Editing server '{{ server.getFqdn() }}'

+
+
+ +
+
+ + +
+

Details

+
+ + +
+
+ + +
+

Config

+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + {% if server.getStatus() == 'registered' %} + + {% endif %}
{% endblock %} \ No newline at end of file diff --git a/views/panel/servers/show.html.twig b/views/panel/servers/show.html.twig new file mode 100644 index 0000000..e69de29