Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
af8dea2e7f | ||
|
|
3d8c4291be | ||
|
|
a0afeabb27 | ||
|
|
96c27a8722 | ||
|
|
4478f7e82f | ||
|
|
c1f3c3ea4e | ||
|
|
2a8564d3bf |
No files matched your search
+35
-5
@@ -13,9 +13,15 @@ if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
|
|||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
$validTokens = [
|
// $validTokens = [
|
||||||
"15a437d128c918633e57dc7d18118a073b807644f21731ed5a7ebcf3eca9e242",
|
// "15a437d128c918633e57dc7d18118a073b807644f21731ed5a7ebcf3eca9e242",
|
||||||
];
|
// ];
|
||||||
|
$validTokens = DatabaseShow(
|
||||||
|
"API_Credentials",
|
||||||
|
"TOKEN"
|
||||||
|
);
|
||||||
|
|
||||||
|
$validTokens = array_column($validTokens, 'TOKEN');
|
||||||
|
|
||||||
$headers = getallheaders();
|
$headers = getallheaders();
|
||||||
$token = $headers['Authorization'] ?? $headers['authorization'] ?? $_SERVER['HTTP_AUTHORIZATION'] ?? '';
|
$token = $headers['Authorization'] ?? $headers['authorization'] ?? $_SERVER['HTTP_AUTHORIZATION'] ?? '';
|
||||||
@@ -28,18 +34,35 @@ if (!in_array($token, $validTokens)) {
|
|||||||
"debug_received_token" => $token,
|
"debug_received_token" => $token,
|
||||||
"debug_all_headers" => $headers
|
"debug_all_headers" => $headers
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
DatabaseInsert(
|
||||||
|
"API_LOGS",
|
||||||
|
"CLIENT_IP, TOKEN, API, FUNKTION, JSON",
|
||||||
|
(new getSpecificData())->getClientIP(),
|
||||||
|
$token,
|
||||||
|
(new getSpecificData())->getRequestURL(),
|
||||||
|
$function,
|
||||||
|
$error
|
||||||
|
);
|
||||||
|
|
||||||
errorMail(
|
errorMail(
|
||||||
"API Login failed",
|
"API Login failed",
|
||||||
$error,
|
$error,
|
||||||
true,
|
true,
|
||||||
);
|
);
|
||||||
echo $error;
|
|
||||||
|
echo json_encode(
|
||||||
|
[
|
||||||
|
"error" => "Unauthorized",
|
||||||
|
"Contact" => "bruno.eckhardt07@gmail.com",
|
||||||
|
]
|
||||||
|
);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($token, $validTokens)) {
|
if (in_array($token, $validTokens)) {
|
||||||
DatabaseInsert(
|
DatabaseInsert(
|
||||||
"API",
|
"API_LOGS",
|
||||||
"CLIENT_IP, TOKEN, API, FUNKTION",
|
"CLIENT_IP, TOKEN, API, FUNKTION",
|
||||||
(new getSpecificData())->getClientIP(),
|
(new getSpecificData())->getClientIP(),
|
||||||
$token,
|
$token,
|
||||||
@@ -61,6 +84,13 @@ if (in_array($token, $validTokens)) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($function === "Berichte") {
|
||||||
|
$data = DatabaseShowWithFK(
|
||||||
|
"Berufsschulberichte",
|
||||||
|
$Berufsschulberichte,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
echo json_encode(
|
echo json_encode(
|
||||||
[
|
[
|
||||||
"success" => true,
|
"success" => true,
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
include_once(__DIR__ . '/../controller/DatabaseController.php');
|
||||||
|
include_once(__DIR__ . '/../controller/DataController.php');
|
||||||
|
|
||||||
|
header('Content-Type: application/json');
|
||||||
|
|
||||||
|
try {
|
||||||
|
$data = DatabaseShowWithFK(
|
||||||
|
"Berufsschulberichte",
|
||||||
|
$Berufsschulberichte,
|
||||||
|
);
|
||||||
|
|
||||||
|
echo json_encode(
|
||||||
|
[
|
||||||
|
'status' => 'success',
|
||||||
|
'data' => $data,
|
||||||
|
], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE
|
||||||
|
);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo json_encode(
|
||||||
|
[
|
||||||
|
'status' => 'failed',
|
||||||
|
'data' => 'none',
|
||||||
|
'error' => $e,
|
||||||
|
], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -147,10 +147,37 @@ function DatabaseUpdate($table, $set, $where, ...$values) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getFKValue($conn, $table, $key, $value, $id, &$cache) {
|
||||||
|
if ($id === null) return null;
|
||||||
|
|
||||||
|
$cacheKey = $table . "_" . $id;
|
||||||
|
|
||||||
|
if (isset($cache[$cacheKey])) {
|
||||||
|
return $cache[$cacheKey];
|
||||||
|
}
|
||||||
|
|
||||||
|
$stmt = $conn->prepare("SELECT `$value` FROM `$table` WHERE `$key` = ? LIMIT 1");
|
||||||
|
if (!$stmt) {
|
||||||
|
die("FK Prepare Fehler: " . $conn->error);
|
||||||
|
}
|
||||||
|
|
||||||
|
$stmt->bind_param("i", $id);
|
||||||
|
$stmt->execute();
|
||||||
|
|
||||||
|
$result = $stmt->get_result()->fetch_assoc();
|
||||||
|
$valueResult = $result[$value] ?? null;
|
||||||
|
|
||||||
|
$cache[$cacheKey] = $valueResult;
|
||||||
|
|
||||||
|
return $valueResult;
|
||||||
|
}
|
||||||
|
|
||||||
function DatabaseShowWithFK($table, $fkMap = [], $columns = "*", $where = "", ...$values) {
|
function DatabaseShowWithFK($table, $fkMap = [], $columns = "*", $where = "", ...$values) {
|
||||||
include_once 'DatabaseConnect.php';
|
include_once 'DatabaseConnect.php';
|
||||||
$conn = db_connect();
|
$conn = db_connect();
|
||||||
|
|
||||||
|
$cache = [];
|
||||||
|
|
||||||
$select = is_array($columns) ? implode(", ", $columns) : $columns;
|
$select = is_array($columns) ? implode(", ", $columns) : $columns;
|
||||||
|
|
||||||
$sql = "SELECT $select FROM `$table`";
|
$sql = "SELECT $select FROM `$table`";
|
||||||
@@ -161,33 +188,32 @@ function DatabaseShowWithFK($table, $fkMap = [], $columns = "*", $where = "", ..
|
|||||||
$stmt = $conn->prepare($sql);
|
$stmt = $conn->prepare($sql);
|
||||||
if (!$stmt) die("Fehler beim Prepare: " . $conn->error);
|
if (!$stmt) die("Fehler beim Prepare: " . $conn->error);
|
||||||
|
|
||||||
if (!$stmt->execute($values)) die("Fehler beim Execute: " . $stmt->error);
|
if (!empty($values)) {
|
||||||
|
$stmt->execute($values);
|
||||||
|
} else {
|
||||||
|
$stmt->execute();
|
||||||
|
}
|
||||||
|
|
||||||
$result = $stmt->get_result();
|
$result = $stmt->get_result();
|
||||||
if (!$result) die("Fehler beim get_result: " . $stmt->error);
|
if (!$result) die("Fehler beim get_result: " . $conn->error);
|
||||||
|
|
||||||
$columnsResult = [];
|
|
||||||
while ($fieldinfo = $result->fetch_field()) {
|
|
||||||
$columnsResult[] = $fieldinfo->name;
|
|
||||||
}
|
|
||||||
|
|
||||||
$rows = $result->fetch_all(MYSQLI_ASSOC);
|
$rows = $result->fetch_all(MYSQLI_ASSOC);
|
||||||
|
|
||||||
foreach ($rows as &$row) {
|
foreach ($rows as &$row) {
|
||||||
foreach ($fkMap as $fkColumn => $fkInfo) {
|
foreach ($fkMap as $fkColumn => $fkInfo) {
|
||||||
if (isset($row[$fkColumn]) && $row[$fkColumn] !== null) {
|
|
||||||
$fkStmt = $conn->prepare(
|
|
||||||
"SELECT {$fkInfo['value']} FROM `{$fkInfo['table']}` WHERE {$fkInfo['key']} = ?"
|
|
||||||
);
|
|
||||||
if (!$fkStmt) die("Fehler beim Prepare FK: " . $conn->error);
|
|
||||||
|
|
||||||
$fkStmt->bind_param("i", $row[$fkColumn]);
|
if (!isset($row[$fkColumn]) || $row[$fkColumn] === null) {
|
||||||
$fkStmt->execute();
|
continue;
|
||||||
$fkResult = $fkStmt->get_result();
|
|
||||||
$fkRow = $fkResult->fetch_assoc();
|
|
||||||
|
|
||||||
$row[$fkColumn] = $fkRow ? $fkRow[$fkInfo['value']] : null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$row[$fkColumn] = getFKValue(
|
||||||
|
$conn,
|
||||||
|
$fkInfo['table'],
|
||||||
|
$fkInfo['key'],
|
||||||
|
$fkInfo['value'],
|
||||||
|
$row[$fkColumn],
|
||||||
|
$cache
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user