diff --git a/api/api.php b/api/api.php index 916aa96..8591c14 100755 --- a/api/api.php +++ b/api/api.php @@ -16,6 +16,7 @@ class gbAPI { private $config; private $internal; private $response; + private $lastError; private function b64url_encode($data) { return rtrim(strtr(base64_encode($data), "+/", "-_"), "="); @@ -40,6 +41,8 @@ class gbAPI { "error_text" => "Authentication failed." ]; + $this->lastError = $data; + $this->answer($status, $data, true); } } @@ -52,17 +55,25 @@ class gbAPI { try { $input = json_decode(file_get_contents("php://input"), true); } catch (JsonException $error) { - $this->answer(400, [ + $error_payload = [ "error" => "invalid_body", "error_text" => "Can not read request body: " . $error - ]); + ]; + + $this->lastError = $error_payload; + + $this->answer(400, $error_payload, true); } return $input; }else{ - $this->answer(400, [ + $error_payload = [ "error" => "false_request_method", "error_text" => "Only POST allowed" - ], true); + ]; + + $this->lastError = $error_payload; + + $this->answer(400, $error_payload, true); } } @@ -191,6 +202,14 @@ class gbAPI { } } + function returnLastError() { + if (isset($this->lastError)) { + return $this->lastError; + }else{ + return NULL; + } + } + function getAnswer() { if (!isset($this->response)) { $error = [ @@ -199,6 +218,8 @@ class gbAPI { "error_text" => "API Returned nothing." ]; + $this->lastError = $error; + return $error; } @@ -218,17 +239,25 @@ class gbAPI { $db_path = APP_PATH . $db_name; if (!is_file($db_path)) { - $api->answer(500, [ + $error_payload = [ "error" => "database_not_found", "error_text" => "The Database was not found." - ], true); + ]; + + $this->lastError = $error_payload; + + $api->answer(500, $error_payload, true); } if (!is_writeable($db_path)) { - $this->answer(500, [ + $error_payload = [ "error" => "database_not_writeable", "error_text" => "The Database is not writeable." - ]); + ]; + + $this->lastError = $error_payload; + + $this->answer(500, $error_payload, true); return; } @@ -250,11 +279,14 @@ class gbAPI { $command = "SELECT name, value FROM settings WHERE name = :name"; $value = $this->dbCommand($command, true, true, [":name" => $key]); - + if (isset($value[0]["value"])) { return $value[0]["value"]; }else{ - return; + $this->answer(500, [ + "error" => "query_returned_nothing", + "error_text" => "The SQL Query Returned nothing usable. Check Database Permissions." + ]); } } } diff --git a/api/auth/isauth.php b/api/auth/isauth.php index 63b9226..bffff1f 100755 --- a/api/auth/isauth.php +++ b/api/auth/isauth.php @@ -9,7 +9,20 @@ if (!isset($internal)) { require_once API_DIR . "api.php"; $api = new gbAPI(true, $internal); -$api->answer(200, [ - "login" => true, - "username" => $api->username -]); \ No newline at end of file +$auth = $api->checkAuth(); + +$lastError = $api->returnLastError(); + +if ($lastError == NULL) { + if ($auth) { + $api->answer(200, [ + "login" => true, + "username" => $api->username + ]); + }else{ + $api->answer(401, [ + "login" => false, + "username" => "" + ]); + } +} \ No newline at end of file diff --git a/api/template/get.php b/api/template/get.php index 82c6228..f823198 100755 --- a/api/template/get.php +++ b/api/template/get.php @@ -10,7 +10,8 @@ $api = new gbAPI(false, $internal); // Get Template $template = $api->getSetting("template"); - -$api->answer(200, [ - "template_name" => $template -]); \ No newline at end of file +if ($template !== NULL) { + $api->answer(200, [ + "template_name" => $template + ]); +} \ No newline at end of file diff --git a/database.db b/database.db index c98c864..8a7f379 100644 Binary files a/database.db and b/database.db differ diff --git a/public/admin/index.php b/public/admin/index.php index fbe2964..7ad60fd 100755 --- a/public/admin/index.php +++ b/public/admin/index.php @@ -16,7 +16,10 @@ $htmlloader = new HTMLLoader(); $call = new APICall("auth/isauth.php"); $response = $call->response; -if (!isset($response["data"]["login"])) { +if (!$response["data"]["login"]) { $htmlloader->setPage("login"); - $htmlloader->show(); + $htmlloader->show([], true); +}else{ + $htmlloader->setPage("admin_home"); + $htmlloader->show([], true); } \ No newline at end of file diff --git a/public/html_loader.php b/public/html_loader.php index fa475a1..8e1911c 100755 --- a/public/html_loader.php +++ b/public/html_loader.php @@ -4,7 +4,7 @@ class HTMLLoader { private $page; private $templates; - private $tempalte_conf; + private $template_conf; function __construct() { // Check if Paths variables exists @@ -13,6 +13,7 @@ class HTMLLoader { } $this->templates = json_decode(file_get_contents(TEMPLATE_CONF), true); + $this->getTemplate(); } function setTemplate($template) { @@ -26,6 +27,7 @@ class HTMLLoader { } $this->template = $template; + $this->template_conf = file_get_contents(TEMPLATE_PATH . $this->templates[$template]["dir_name"] . "/template.json"); } function getTemplate() { @@ -38,19 +40,26 @@ class HTMLLoader { $this->showError("Template API Returned an error: " . $response["error_text"]); } - $this->template = $response["data"]["template_name"]; + $template = $response["data"]["template_name"]; + + $this->template_conf = json_decode(file_get_contents(TEMPLATE_PATH . $this->templates[$template]["dir_name"] . "/template.json"), true); + $this->template = $template; } function setPage($page) { - $this->page = $page; + if (!array_key_exists($page, $this->template_conf)) { + $this->showError("Page " . $page . " for template " . $this->template . " not found."); + }else{ + $this->page = $page; + } } function showError($error) { $template_dir = $this->templates[$this->template]["dir_name"]; - $template_conf = json_decode(file_get_contents(TEMPLATE_DIR . $template_dir)); + $template_conf = json_decode(file_get_contents(TEMPLATE_PATH . $template_dir . "/template.json"), true); - $page = $tempalte_conf["error"]; - $html = file_get_contents(TEMPLATE_PATH . $page["dir_name"] . "/" . $page["html_file"]); + $page = $template_conf["error"]; + $html = file_get_contents(TEMPLATE_PATH . $template_dir . "/" . $page["dir_name"] . "/" . $page["html_file"]); $css = ""; @@ -79,12 +88,8 @@ class HTMLLoader { } $template = $this->template; - + $tempalte_conf = $this->template_conf; $template_dir = $this->templates[$template]["dir_name"]; - $template_conf = TEMPLATE_PATH . $template_dir . "/template.json"; - - $file = file_get_contents($template_conf); - $tempalte_conf = json_decode($file, true); $page = $tempalte_conf[$this->page]; diff --git a/public/templates/standard/admin_home/home.html b/public/templates/standard/admin_home/home.html new file mode 100644 index 0000000..1040dd0 --- /dev/null +++ b/public/templates/standard/admin_home/home.html @@ -0,0 +1,150 @@ + + +
+ + +