Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4782a2c401 |
+59
-76
@@ -1,40 +1,35 @@
|
|||||||
<?php
|
<?php
|
||||||
include_once '../controller/DatabaseController.php';
|
include_once(__DIR__ . '/../controller/DatabaseController.php');
|
||||||
include_once '../controller/DataController.php';
|
include_once(__DIR__ . '/../controller/DataController.php');
|
||||||
include_once __DIR__ . '/../modules/Mail.php';
|
include_once(__DIR__ . '/../modules/Mail.php');
|
||||||
|
|
||||||
header("Content-Type: application/json");
|
header("Content-Type: application/json");
|
||||||
header("Access-Control-Allow-Origin: *");
|
header("Access-Control-Allow-Origin: *");
|
||||||
header("Access-Control-Allow-Headers: Authorization, Function, Content-Type");
|
|
||||||
header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
|
|
||||||
|
|
||||||
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
|
// 1. Daten aus der URL (GET) statt aus dem Header holen
|
||||||
http_response_code(200);
|
$token = $_GET['token'] ?? '';
|
||||||
exit();
|
$function = $_GET['action'] ?? ''; // Ich habe es 'action' genannt, passend zur URL
|
||||||
|
|
||||||
|
// Prüfen, ob überhaupt etwas übergeben wurde
|
||||||
|
if (empty($token) || empty($function)) {
|
||||||
|
http_response_code(400);
|
||||||
|
echo json_encode(["error" => "Token oder Action fehlt in der URL"]);
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// $validTokens = [
|
// 2. Token-Validierung direkt in der Datenbank (Performanter!)
|
||||||
// "15a437d128c918633e57dc7d18118a073b807644f21731ed5a7ebcf3eca9e242",
|
// Annahme: Deine DatabaseShow kann Filter. Wenn nicht, hier das SQL anpassen.
|
||||||
// ];
|
$checkToken = DatabaseShow(
|
||||||
$validTokens = DatabaseShow(
|
|
||||||
"API_Credentials",
|
"API_Credentials",
|
||||||
"TOKEN"
|
"TOKEN",
|
||||||
|
"TOKEN = ?",
|
||||||
|
$token
|
||||||
);
|
);
|
||||||
|
|
||||||
$validTokens = array_column($validTokens, 'TOKEN');
|
if (empty($checkToken)) {
|
||||||
|
|
||||||
$headers = getallheaders();
|
|
||||||
$token = $headers['Authorization'] ?? $headers['authorization'] ?? $_SERVER['HTTP_AUTHORIZATION'] ?? '';
|
|
||||||
$function = $headers['Function'] ?? $headers['function'] ?? '';
|
|
||||||
|
|
||||||
if (!in_array($token, $validTokens)) {
|
|
||||||
http_response_code(401);
|
http_response_code(401);
|
||||||
$error = json_encode([
|
|
||||||
"error" => "Unauthorized",
|
// Loggen des Fehlversuchs
|
||||||
"debug_received_token" => $token,
|
|
||||||
"debug_all_headers" => $headers
|
|
||||||
]);
|
|
||||||
|
|
||||||
DatabaseInsert(
|
DatabaseInsert(
|
||||||
"API_LOGS",
|
"API_LOGS",
|
||||||
"CLIENT_IP, TOKEN, API, FUNKTION, JSON",
|
"CLIENT_IP, TOKEN, API, FUNKTION, JSON",
|
||||||
@@ -42,60 +37,48 @@ if (!in_array($token, $validTokens)) {
|
|||||||
$token,
|
$token,
|
||||||
(new getSpecificData())->getRequestURL(),
|
(new getSpecificData())->getRequestURL(),
|
||||||
$function,
|
$function,
|
||||||
$error
|
json_encode(["error" => "Unauthorized"])
|
||||||
);
|
);
|
||||||
|
|
||||||
errorMail(
|
echo json_encode(["error" => "Zugriff verweigert", "hint" => "Token ungültig"]);
|
||||||
"API Login failed",
|
|
||||||
$error,
|
|
||||||
true,
|
|
||||||
);
|
|
||||||
|
|
||||||
echo json_encode(
|
|
||||||
[
|
|
||||||
"error" => "Unauthorized",
|
|
||||||
"Contact" => "bruno.eckhardt07@gmail.com",
|
|
||||||
]
|
|
||||||
);
|
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($token, $validTokens)) {
|
// 3. Logik-Teil mit switch (sauberer als viele IFs)
|
||||||
DatabaseInsert(
|
$data = null;
|
||||||
"API_LOGS",
|
|
||||||
"CLIENT_IP, TOKEN, API, FUNKTION",
|
|
||||||
(new getSpecificData())->getClientIP(),
|
|
||||||
$token,
|
|
||||||
(new getSpecificData())->getRequestURL(),
|
|
||||||
$function
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($function === "IPs") {
|
|
||||||
$data = DatabaseShow(
|
|
||||||
"logs",
|
|
||||||
"CLIENT_IP"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($function === "Ueberstunden") {
|
switch ($function) {
|
||||||
$data = DatabaseShow(
|
case "UeberstundenAbbau":
|
||||||
"Ueberstunden",
|
$data = DatabaseShow("Ueberstunden", "DATUM, MINUTEN", "GRUND = ?", "Abbau");
|
||||||
"MINUTEN"
|
break;
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($function === "Berichte") {
|
case "UeberstundenAktuell":
|
||||||
$data = DatabaseShowWithFK(
|
$conn = db_connect();
|
||||||
"Berufsschulberichte",
|
$sql = "SELECT
|
||||||
$Berufsschulberichte,
|
(SELECT COALESCE(SUM(OVERTIME), 0) FROM Firmenberichte) AS berichte,
|
||||||
);
|
(SELECT COALESCE(SUM(MINUTEN), 0) FROM Ueberstunden WHERE GRUND = 'Abbau') AS abbau,
|
||||||
}
|
(SELECT COALESCE(SUM(MINUTEN), 0) FROM Ueberstunden WHERE GRUND = 'Aufbau') AS aufbau";
|
||||||
|
$res = $conn->query($sql);
|
||||||
echo json_encode(
|
$row = $res->fetch_object();
|
||||||
[
|
$data = ($row->berichte - $row->abbau + $row->aufbau) / 60;
|
||||||
"success" => true,
|
break;
|
||||||
"data" => $data,
|
|
||||||
]
|
case "Berichte":
|
||||||
);
|
$data = DatabaseShowWithFK("Berufsschulberichte", $Berufsschulberichte);
|
||||||
exit;
|
break;
|
||||||
}
|
|
||||||
|
case "Stundenplan":
|
||||||
|
$data = DatabaseShowWithFK("Stundenplan", $Stundenplan, "ZEITEN, MO, DI, MI, DO, FR");
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
http_response_code(404);
|
||||||
|
echo json_encode(["error" => "Funktion '$function' nicht gefunden"]);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. Erfolgreiche Antwort
|
||||||
|
echo json_encode([
|
||||||
|
"success" => true,
|
||||||
|
"data" => $data
|
||||||
|
]);
|
||||||
Reference in new issue
Block a user