Semi-stable version with old variable names

This commit is contained in:
Fabio Herzig
2026-07-16 18:43:30 +02:00
parent 3731183654
commit c8e7ce9174
165 changed files with 25654 additions and 9728 deletions
+80 -13
View File
@@ -1,5 +1,14 @@
<?php
if (session_status() !== PHP_SESSION_ACTIVE) session_start();
if (!isset($baseDir)) {
$baseDir = $_SERVER['DOCUMENT_ROOT'];
}
require_once $baseDir . '/../scripts/session_functions.php';
ini_wkvs_session();
use Dotenv\Dotenv;
$wsPermissions = [
'displaycontrol' => ['access_granted_wk_leitung'],
@@ -11,16 +20,13 @@ $baseDir = $_SERVER['DOCUMENT_ROOT'];
require_once __DIR__ . '/../redis/connect-to-redis.php';
$redisSaveTime = 100;
$redis = null;
connectToRedis();
function checkWSTokenPermissions($RPerm) {
switch ($RPerm) {
case 'displaycontrol':
return $_SESSION['access_granted_wk_leitung'] ?? false;
case 'einstellungen':
case 'wk_leitung':
return $_SESSION['access_granted_wk_leitung'] ?? false;
case 'kampfrichter';
return $_SESSION['access_granted_kampfrichter'] ?? false;
@@ -29,22 +35,56 @@ function checkWSTokenPermissions($RPerm) {
}
}
function generateWSToken($wsRequestedPermission) {
global $redis;
$envFile = realpath(__DIR__ . '/../../config/.env.wk-id');
if (!checkWSTokenPermissions($wsRequestedPermission)) return null;
if ($envFile === false) {
http_response_code(500);
echo json_encode([
'success' => false,
'message' => "Environment file not found"
]);
exit;
}
try {
$envDir = dirname($envFile);
$dotenv = Dotenv::createImmutable($envDir, '.env.wk-id');
$dotenv->load();
} catch (Throwable $e) {
http_response_code(500);
echo json_encode([
'success' => false,
'message' => "Dotenv error"
]);
}
$wkId = $_ENV['WETTKAMPF_ID'];
$allowedWkLeitungAccess = ['displaycontrol', 'einstellungen'];
function generateWSAdminToken($wsRequestedAcesstype, $wsRequestedAccess) {
global $redis, $wkId, $allowedWkLeitungAccess;
if (!checkWSTokenPermissions($wsRequestedAcesstype)) return null;
$wsGrantedPermission = [];
if ($wsRequestedPermission === 'kampfrichter') {
if (!isset($_SESSION['selectedFreigabeKampfrichter'])) return null;
if ($wsRequestedAcesstype === 'kampfrichter' && isset($_SESSION['selectedFreigabeIdKampfrichter'])) {
$wsGrantedPermission['type'] = 'kampfrichter';
$wsGrantedPermission['access'] = $_SESSION['selectedFreigabeKampfrichter'];
$wsGrantedPermission['access'] = $_SESSION['selectedFreigabeIdKampfrichter'];
} elseif ($wsRequestedAcesstype === 'wk_leitung' && in_array($wsRequestedAccess, $allowedWkLeitungAccess)) {
$wsGrantedPermission['type'] = $wsRequestedAcesstype;
$wsGrantedPermission['access'] = $wsRequestedAccess;
} else {
$wsGrantedPermission['type'] = $wsRequestedPermission;
return null;
}
$wsGrantedPermission['wk_id'] = $wkId;
$wsGrantedPermission['authenticated'] = true;
$token = bin2hex(random_bytes(32));
$key = "ws:token:" . $token;
@@ -52,5 +92,32 @@ function generateWSToken($wsRequestedPermission) {
$_SESSION['WS_KEY'] = $key;
return $key;
}
$allowedReadTypes = ['display', 'audio', 'rankLive'];
function generateWSReadToken($wsRequestedAcesstype, $wsRequestedAccess) {
global $redis, $wkId, $allowedReadTypes;
$wsGrantedPermission = [];
if (!in_array($wsRequestedAcesstype, $allowedReadTypes)) {
return null;
}
$wsGrantedPermission['access'] = $wsRequestedAccess;
$wsGrantedPermission['type'] = $wsRequestedAcesstype;
$wsGrantedPermission['wk_id'] = $wkId;
$wsGrantedPermission['authenticated'] = false;
$token = bin2hex(random_bytes(16));
$key = "ws:token:" . $token;
$success = $redis->set($key, json_encode($wsGrantedPermission), ['nx', 'ex' => 30]);
$_SESSION['WS_KEY'] = $key;
return $key;
}