Helper to load JSON permissions (with optional decryption)
($username)
| 328 | |
| 329 | // Helper to load JSON permissions (with optional decryption) |
| 330 | function loadUserPermissions($username) |
| 331 | { |
| 332 | global $encryptionKey; |
| 333 | $permissionsFile = USERS_DIR . 'userPermissions.json'; |
| 334 | if (!file_exists($permissionsFile)) { |
| 335 | return false; |
| 336 | } |
| 337 | |
| 338 | $content = file_get_contents($permissionsFile); |
| 339 | $decrypted = decryptData($content, $encryptionKey); |
| 340 | $json = ($decrypted !== false) ? $decrypted : $content; |
| 341 | $permsAll = json_decode($json, true); |
| 342 | |
| 343 | if (!is_array($permsAll)) { |
| 344 | return false; |
| 345 | } |
| 346 | |
| 347 | // Try exact match first, then lowercase (since we store keys lowercase elsewhere) |
| 348 | $uExact = (string)$username; |
| 349 | $uLower = strtolower($uExact); |
| 350 | |
| 351 | $row = $permsAll[$uExact] ?? $permsAll[$uLower] ?? null; |
| 352 | |
| 353 | // Normalize: always return an array when found, else false (to preserve current callers’ behavior) |
| 354 | return is_array($row) ? $row : false; |
| 355 | } |
| 356 | |
| 357 | function fr_local_user_exists($username): bool |
| 358 | { |
no test coverage detected