['access_granted_wk_leitung'], 'einstellungen' => ['access_granted_wk_leitung'], 'kampfrichter' => ['access_granted_kampfrichter'] ]; $baseDir = $_SERVER['DOCUMENT_ROOT']; require_once __DIR__ . '/../redis/connect-to-redis.php'; $redis = null; connectToRedis(); function checkWSTokenPermissions($RPerm) { switch ($RPerm) { case 'wk_leitung': return $_SESSION['access_granted_wk_leitung'] ?? false; case 'kampfrichter'; return $_SESSION['access_granted_kampfrichter'] ?? false; default: return false; } } $envFile = realpath(__DIR__ . '/../../config/.env.wk-id'); 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 ($wsRequestedAcesstype === 'kampfrichter' && isset($_SESSION['selectedFreigabeIdKampfrichter'])) { $wsGrantedPermission['type'] = 'kampfrichter'; $wsGrantedPermission['access'] = $_SESSION['selectedFreigabeIdKampfrichter']; } elseif ($wsRequestedAcesstype === 'wk_leitung' && in_array($wsRequestedAccess, $allowedWkLeitungAccess)) { $wsGrantedPermission['type'] = $wsRequestedAcesstype; $wsGrantedPermission['access'] = $wsRequestedAccess; } else { return null; } $wsGrantedPermission['wk_id'] = $wkId; $wsGrantedPermission['authenticated'] = true; $token = bin2hex(random_bytes(32)); $key = "ws:token:" . $token; $success = $redis->set($key, json_encode($wsGrantedPermission), ['nx', 'ex' => 10]); $_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; }