Ver código fonte

Restore user config from backup when it doesn't exist (#7682)

* Restore user config from backup when it doesn't exist

* Supress warnings

* Remove copied config if copy() fails

* `return false` after `unlink()`

* Performance

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
Inverle 9 meses atrás
pai
commit
bea9ca12ad
1 arquivos alterados com 12 adições e 1 exclusões
  1. 12 1
      app/Controllers/userController.php

+ 12 - 1
app/Controllers/userController.php

@@ -16,7 +16,18 @@ class FreshRSS_user_Controller extends FreshRSS_ActionController {
 	}
 
 	public static function userExists(string $username): bool {
-		return @file_exists(USERS_PATH . '/' . $username . '/config.php');
+		$config_path = USERS_PATH . '/' . $username . '/config.php';
+		if (@file_exists($config_path)) {
+			return true;
+		} elseif (@file_exists($config_path . '.bak.php')) {
+			Minz_Log::warning('Config for user “' . $username . '” not found. Attempting to restore from backup.', ADMIN_LOG);
+			if (!copy($config_path . '.bak.php', $config_path)) {
+				@unlink($config_path);
+				return false;
+			}
+			return @file_exists($config_path);
+		}
+		return false;
 	}
 
 	/** @param array<string,mixed> $userConfigUpdated */